我正在尝试按照以下教程https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#webtestclient-stream中解释的方式测试我的 SSE API 。
不幸的是,它对我不起作用。要生成下一个事件,有必要执行一些将触发它的操作。在等待 WebTestClient 的响应时我无法做到这一点(我没有找到添加此类处理程序的可能性)。
我通过创建定期触发生成事件的单独线程找到了解决方法,但这并不优雅。有没有更好的方法呢?
TimerTask task = new TimerTask() {
public void run() {
while (true) {
//code that trigger generating event periodically
}
}
};
Timer timer = new Timer("Timer");
long delay = 1000L;
timer.schedule(task, delay);
FluxExchangeResult<MyEvent> result = client.get().uri("/events")
.accept(TEXT_EVENT_STREAM)
.exchange()
.expectStatus().isOk()
.returnResult(MyEvent.class);
Flux<Event> eventFlux = result.getResponseBody();
StepVerifier.create(eventFlux)
.expectNext(person)
.expectNextCount(4)
.consumeNextWith(p -> ...)
.thenCancel()
.verify();