流式响应

测试流式响应(如 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 也支持这一点,你可以在其中 测试运行中的服务器