如何模拟特定的 URL 路径?

opt*_*lic 4 okhttp mockwebserver

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

//Create a mock server
mockWebServer.start(8080)
mockWebServer.enqueue(MockResponse().setBody("").setResponseCode(HttpURLConnection.HTTP_OK))
Run Code Online (Sandbox Code Playgroud)

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

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

Dha*_*jay 5

使用调度程序

        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);

Run Code Online (Sandbox Code Playgroud)

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

模拟网络服务器可以启动一次,如下所示:

   public static MockWebServer mockBackEnd;

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


    @AfterAll
    static void tearDown() throws IOException {
        mockBackEnd.shutdown();
    }
Run Code Online (Sandbox Code Playgroud)

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