如何模拟特定的URL路径



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

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

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

如何模拟一个特定的url而不是所有的url?

使用Dispatcher

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条件。

mockweb服务器可以像一样启动一次

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

@AfterAll
static void tearDown() throws IOException {
mockBackEnd.shutdown();
}

使用@DynamicPropertySource可以更改mockserver主机/端口的任何属性。

最新更新