【问题标题】:Testing Server Sent Events (SSE) with WebTestClient使用 WebTestClient 测试服务器发送事件 (SSE)
【发布时间】:2020-08-08 04:49:41
【问题描述】:

我想知道测试 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());
  }

【问题讨论】:

    标签: java spring testing server-sent-events webtestclient


    【解决方案1】:

    我的问题是我必须订阅

    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
        }
      });
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2012-07-15
      • 2015-10-20
      • 1970-01-01
      相关资源
      最近更新 更多