流式响应
测试流式响应(如 Server-Sent Events)的最佳方法是通过 [WebTestClient],它可以用作测试客户端连接到 MockMvc 实例,以在没有运行服务器的情况下对 Web MVC 控制器执行测试。例如:
WebTestClient client = MockMvcWebTestClient.bindToController(new SseController()).build();
FluxExchangeResult<Person> exchangeResult = client.get()
.uri("/persons")
.exchange()
.expectStatus().isOk()
.expectHeader().contentType("text/event-stream")
.returnResult(Person.class);
// 使用 Project Reactor 中的 StepVerifier 测试流式响应
StepVerifier.create(exchangeResult.getResponseBody())
.expectNext(new Person("N0"), new Person("N1"), new Person("N2"))
.expectNextCount(4)
.consumeNextWith(person -> assertThat(person.getName()).endsWith("7"))
.thenCancel()
.verify();
WebTestClient 还可以连接到实时服务器并执行完整的端到端集成测试。Infra App 也支持这一点,你可以在其中 测试运行中的服务器。