使用 Okhttp.MockebServer 测试 websocket

Posted

技术标签:

【中文标题】使用 Okhttp.MockebServer 测试 websocket【英文标题】:Using Okhttp.MockebServer for testing websocket 【发布时间】:2022-01-14 12:34:15 【问题描述】:

我正在使用 okhttp.MockWebServer 来测试 rest api 调用。 有没有办法用它来模拟 websocket 调用?

本质上,我有一个 ws 客户端(客户端扩展了 WebSocketListener),它调用外部 websocket 服务器并异步获取响应。 我想模拟这个服务器,以便它可以用于 junit 测试。

有什么想法吗?

谢谢

【问题讨论】:

【参考方案1】:

查看https://github.com/square/okhttp/blob/f8fd4d08decf697013008b05ad7d2be10a648358/okhttp/src/test/java/okhttp3/internal/ws/WebSocketHttpTest.java中的测试


  @Test public void serverMessage() 
    webServer.enqueue(new MockResponse().withWebSocketUpgrade(serverListener));
    WebSocket webSocket = newWebSocket();

    clientListener.assertOpen();
    WebSocket server = serverListener.assertOpen();

    server.send("Hello, WebSockets!");
    clientListener.assertTextMessage("Hello, WebSockets!");

    closeWebSockets(webSocket, server);
  

【讨论】:

以上是关于使用 Okhttp.MockebServer 测试 websocket的主要内容,如果未能解决你的问题,请参考以下文章

第一篇 用于测试使用

如何在 testRigor 的一个测试中使用测试套件之前和测试套件之后?

Linux在测试中的主要使用场景都有哪些?

使用[测试类]而不是[编码UI测试]时将测试用例与测试方法相关联

3 测试使用和LogCat日志

使用word发布博客的格式测试