junit - 使用 Okhttp.MockebServer 测试 websocket

标签 junit okhttp mockwebserver

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

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

有什么想法吗?

谢谢

最佳答案

查看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);
  }

关于junit - 使用 Okhttp.MockebServer 测试 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70293970/

相关文章:

java - 为什么 Java 类型推断选择了错误的重载?

java - 使用 Feign @RequestLine 添加decodeSlash

java - bug retrofit.RetrofitError : java. io.EOFException for Android

android - okhttp+retrofit - 许多线程处于监控状态

java - Junit 中的远程 PhantomJS 驱动程序

使用 Junit : testing network/bluetooth resources 进行 Android 单元测试

java - 从 JUnit 测试时间中排除 @Before 方法持续时间

java.lang.IllegalArgumentException : Log tag "okhttp3.mockwebserver.MockWebServer" exceeds limit of 23 characters

java - 使用 MockWebServer 返回 gzip 响应

java - OkHttp MockWebServer 无法接受 android P(API 28)仪器测试中的连接