【问题标题】:How Can I Mock A Specific URL Path?如何模拟特定的 URL 路径?
【发布时间】:2021-07-17 15:28:14
【问题描述】:

我在测试期间使用 okhttp 来模拟我的 http 响应。

//Create a mock server
mockWebServer.start(8080)
mockWebServer.enqueue(MockResponse().setBody("").setResponseCode(HttpURLConnection.HTTP_OK))

但是,这对每条路径的响应都是 OK。

如何模拟一个特定的 url 而不是全部?

【问题讨论】:

    标签: okhttp mockwebserver


    【解决方案1】:

    使用调度程序

            Dispatcher dispatcher = new Dispatcher() {
                @Override
                public MockResponse dispatch(RecordedRequest request) {
                    switch (request.getPath()) {
                        case "/get":
                            return new MockResponse().setResponseCode(200).setBody("test");
                    }
                    return new MockResponse().setResponseCode(404);
                }
            };
    
            mockBackEnd.setDispatcher(dispatcher);
    
    

    上面可以写在你的测试方法里面。你可以在那里有一堆 URL 条件。

    mockwebserver 可以像这样启动一次:

       public static MockWebServer mockBackEnd;
    
        @BeforeAll
        static void setUp() throws IOException {
            mockBackEnd = new MockWebServer();
            mockBackEnd.start();
        }
    
    
        @AfterAll
        static void tearDown() throws IOException {
            mockBackEnd.shutdown();
        }
    

    使用@DynamicPropertySource 更改任何带有模拟服务器主机/端口的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 2021-08-04
      • 1970-01-01
      • 2016-11-27
      • 2020-06-12
      • 2021-02-19
      • 2016-01-07
      • 2021-08-17
      相关资源
      最近更新 更多