使用 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的主要内容,如果未能解决你的问题,请参考以下文章