Я пытаюсь протестировать мой SSE API способом, описанным в следующем руководстве https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#webtestclient -stream .
К сожалению, у меня это не работает. Для генерации следующего события необходимо выполнить некоторые действия, которые его инициируют. Я не мог сделать это, ожидая ответа от 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();