流式响应
测试流式响应(如服务器发送事件)的最佳方式是通过[WebTestClient],它可以作为测试客户端连接到MockMvc
实例,对Spring MVC控制器进行测试,而无需运行服务器。例如:
-
Java
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
还可以连接到运行中的服务器并执行完整的端到端集成测试。这也受到Spring Boot的支持,您可以测试运行中的服务器。