【问题标题】:Karate WebSocket how to listen to multiple messages within one session?空手道 WebSocket 如何在一个会话中收听多条消息?
【发布时间】:2021-09-23 11:19:24
【问题描述】:

对于我们的集成测试,我们有一个场景,我们想要收听由我们使用的环境预定义的一定数量的消息。我发现可以通过打开一个新连接来收听多条消息,但这并不能提供太大的灵活性。

【问题讨论】:

    标签: websocket integration-testing karate


    【解决方案1】:

    您是否阅读过文档,因为据我所知,如果您定义了“处理程序”函数,则可以对多条消息使用相同的连接并选择何时停止:https://github.com/intuit/karate#websocket

    另见:https://stackoverflow.com/a/67870765/143475

    但是,如果您有非常特定的需求或自定义逻辑,那么最好的办法就是编写一小段 Java“粘合”代码,您将获得所需的所有灵活性。您也许可以重复使用 Karate 的 Java API,例如 com.intuit.karate.http.WebSocketClient - 但这没有记录,并且可能是您可以研究/贡献代码的区域。

    这是一个很好的例子:https://twitter.com/KarateDSL/status/1417023536082812935 Java 互操作方法提供的灵活性。

    【讨论】:

    • 我已经看到了处理函数,但是否可以在其中使用我们自己的参数而不使用文字字符串。即像这样的东西? function(msg, eventId){ return msg.startsWith('{"id":"' + eventId) }
    • @ViktorBaert 收到的消息只是普通字符串,所以处理函数接受一个参数 - 但如果你想要的话,你应该可以使用 karate.fromString()github.com/intuit/karate#karate-fromstring - 否则你应该走 Java 路线
    • 只是想让你知道我会接受这个答案。我们使用满足我们所有需求的 okhttp websocket 客户端进行了 java-interop 路线,谢谢!
    • @ViktorBaert 感谢更新!考虑写一篇关于你所做的文章或博客文章,我认为这对其他人非常有用?
    猜你喜欢
    • 2019-08-21
    • 1970-01-01
    • 2019-02-23
    • 2019-03-05
    • 2020-05-07
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多