Тестирование отправленных событий сервера (SSE) с WebTestClient - PullRequest
0 голосов
/ 24 апреля 2020

Я хотел бы знать, как лучше всего протестировать SSE?

Что я хочу проверить, так это то, что я хочу проверить, будет ли сообщение, которое я отправил (используя Kafka), таким же, которое я получаю в SSE.

Я прочитал, что могу сделать это с помощью WebTestClient, но я не понимаю, как мне подключиться к SSE, отправить сообщение, а затем проверить правильность моего сообщения.

Я предоставил код ниже:

  public void sseIsRunning() {
    WebTestClient client = WebTestClient.bindToServer()
      .baseUrl("http://localhost:8080")
      .build();

     client.get()
      .uri("/sse/1")
      .accept(TEXT_EVENT_STREAM)
      .exchange()
      .expectStatus().isOk()
      .returnResult(MyEvent.class);

     StepVerifier.create(result.getResponseBody())
      .expectNext(myEvent())
      .thenCancel()
      .verify();
}
  private MyEvent myEvent() {
    MyEvent myEvent = new MyEvent();
    myEvent.setClientId(1);
    return myEvent;
  }
  public void messageIsSent() {
    kafka.sendMessage("myTopic", myEvent());
  }

1 Ответ

0 голосов
/ 28 апреля 2020

Проблема в моем случае заключалась в том, что мне пришлось подписаться

public void sseIsRunning() {
WebTestClient client = WebTestClient.bindToServer()
  .baseUrl("http://localhost:8080")
  .build();

 client.get()
  .uri("/sse/1")
  .accept(TEXT_EVENT_STREAM)
  .exchange()
  .expectStatus().isOk()
  .returnResult(MyEvent.class)
  .getResponseBody()
  .subscribe(new Consumer<String>() {
    @Override
    public void accept(String event) {
      // response map for MyEvent class
    }
  });

}

...