流式响应

测试流式响应(如服务器发送事件)的最佳方式是通过[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的支持,您可以测试运行中的服务器