繁体   English   中英

具有服务器发送事件 (SSE) 支持的模拟库

[英]Mocking libraries with server sent events (SSE) support

我正在考虑使用“WireMock”实用程序,以便为我的自动测试创建基于 HTTP 的 API 的简单模拟器。 我的问题是,某些测试需要服务器发送事件 (SSE),目前不支持(据我在他们的 github 评论中读到),至少不是开箱即用的。 有谁知道我是否可以使用 WireMock 库的现有功能实现简单的 SSE 模拟器,或者可能知道一些支持 SSE 的相同类型的替代库?

作为一种选择,您可以手动构建事件流,并像这样模拟来自 SSE 端点的响应(我使用的是 wiremock-jre8-standalone:2.27.1):

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

您可以使用嵌入式 muServer https://muserver.io/sse Wiremock 或 MockWebServer 有未解决的问题:
https://github.com/square/okhttp/issues/2894
https://github.com/wiremock/wiremock/issues/460

尽管 Ivan 的回答应该足以发送一些一次性 SSE,但我相信 Web 服务器会在发送它们后关闭连接,这在 SSE 中是意外的,并且可能会导致客户端出现一些意外/副作用错误行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM