我考虑使用"WireMock"实用程序来创建HTTP基础API的简单模拟器,以进行自动测试。我的问题是,一些测试需要服务器发送事件(SSE),这似乎目前(至少不是直接)不被支持,根据他们在GitHub评论中的说法。是否有人知道我可以使用现有的WireMock库功能实现简单的SSE模拟器,或者知道一些同类型的替代库,支持SSE呢?
我考虑使用"WireMock"实用程序来创建HTTP基础API的简单模拟器,以进行自动测试。我的问题是,一些测试需要服务器发送事件(SSE),这似乎目前(至少不是直接)不被支持,根据他们在GitHub评论中的说法。是否有人知道我可以使用现有的WireMock库功能实现简单的SSE模拟器,或者知道一些同类型的替代库,支持SSE呢?
...
import static com.github.tomakehurst.wiremock.client.WireMock.get;
import static com.github.tomakehurst.wiremock.client.WireMock.givenThat;
import static com.github.tomakehurst.wiremock.client.WireMock.notFound;
import static com.github.tomakehurst.wiremock.client.WireMock.okForContentType;
import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
...
String eventStream =
"id:id1\nevent:event1\ndata:data1\n\n" +
"id:id2\nevent:event2\ndata:data2\n\n" +
"id:id3\nevent:event3\ndata:data3\n\n";
givenThat(get(urlPathEqualTo("/sse"))
.willReturn(okForContentType("text/event-stream", eventStream)));
虽然Ivan的答案应该足以发送一次性SSE,但我认为Web服务器将在发送它们后关闭连接,这在SSE中是意外的,并且可能导致客户端产生一些意外/副作用错误行为。