Java中的Stub WebSocket服务器



我试图实现的是测试一些背后有web套接字通信的逻辑。

我最近实现了WebSocket客户端端点,我想像测试WireMock的http集成一样测试它——声明性地指定预期来自外部WebSocket服务器的web套接字消息。

预期库/API:

//      SomeLibrary is configured properly
SomeLibrary.stubSocketMessage(forSession(idFromString("Some session id.")))
.respondTo("Message sent from service with web socket client endpoint.")
.withText("Response from web socket server stub.")
.withDelay(500);
//        calling my logic that uses WS / sends message
//        assertions

我找不到这样的库,所以我只是在测试包中实现了嵌入式websocket服务器。这对于单个会话场景来说已经足够了。

总之:我在服务层的某个地方有一个websocket连接,我想用MockMvc编写端到端测试。我想要WS的一些预定义的模拟行为,所以我需要一个嵌入式的http/WS服务器,并指定其WS服务器端点的行为。

我想要实现的目标有解决方案吗?写这样的测试有意义吗?如果没有,为什么?

@patrolfr,

我将试着回答你问题的一部分:如果有解决方案的话。

你可以看看https://stubby4j.com存根服务器。它支持通过HTTP/1.1、HTTP/2和WebSockets协议对外部系统进行存根处理。该库使用基于YAML的配置来描述存根服务器的行为。

更具体地说,关于WebSockets协议,请查看文档:https://stubby4j.com/docs/websockets_configuration_howto.html

全面披露:我是该项目的负责人。

最新更新