[TOC] ## `MockServerHttpRequest`和`MockServerHttpResponse` `org.springframework.mock.http.server.reactive`包包含了用于`WebFlux`应用程序的`ServerHttpRequest`和`ServerHttpResponse`的`Mock`实现。 `org.springframework.mock.web.server`包包含一个`mock` `ServerWebExchange`,它依赖于那些`mock`请求和响应对象。 `MockServerHttpRequest`和`MockServerHttpResponse`都扩展自相同的抽象基类,作为特定于服务器的实现,并与它们共享行为。例如,`mock`请求一旦创建就不可变,但是您可以使用`ServerHttpRequest`中的`mutate()`方法来创建修改后的实例。 为了让模拟响应正确实现写契约并返回写完成句柄(即`Mono<Void>`),默认情况下,它使用带有`cache().then()`的`Flux`,它缓冲数据并使其可用于测试中的断言。应用程序可以设置自定义的写函数(例如,测试无限流)。 ## `WebTestClient` `WebTestClient`是一个用于测试服务器应用程序的`HTTP`客户端。它包装了`Spring`的`WebClient`并使用它来执行请求,但暴露了一个测试`facade`来验证响应。`WebTestClient`可用于执行端到端`HTTP`测试。它还可以用于测试`Spring MVC`和`Spring WebFlux`应用程序,无需运行服务器,通过模拟服务器请求和响应对象。