连续调用 MockWebServer 进行测试
Test with consecutive calls to MockWebServer
我正在为 Activity 编写测试,它会连续多次调用服务器。
我的 MockWebServer 混合了 responses.e.g 的序列。当我发出两个连续的请求 request1 和 request2 时,有时 returns request2 的 Json 响应 request1 和 request1 的 Json 响应 request2。
我如何指定 MockWebServer 必须 return 指定请求的响应?
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response1 path"));
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response2 path"));
在文档中说“排队脚本响应 returned 到顺序发出的请求。第一个请求由第一个排队的响应提供服务;第二个请求由第二个排队的响应提供服务;并且等等。"
此序列不适用于并行请求。
为了处理响应序列,我为我的 MockServer 实例编写了一个调度程序。
它收到一个请求,检查它是 URL 的端点和 returns 对应的响应
Dispatcher mDispatcher = new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) {
if (request.getPath().contains("/request1")) {
return new MockResponse().setBody("reponse1");
}
if (request.getPath().contains("/request2")) {
return new MockResponse().setBody("reponse2");
}
return new MockResponse().setResponseCode(404);
}
}
mMockServer.setDispatcher(mDispatcher);
我正在为 Activity 编写测试,它会连续多次调用服务器。 我的 MockWebServer 混合了 responses.e.g 的序列。当我发出两个连续的请求 request1 和 request2 时,有时 returns request2 的 Json 响应 request1 和 request1 的 Json 响应 request2。 我如何指定 MockWebServer 必须 return 指定请求的响应?
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response1 path"));
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response2 path"));
在文档中说“排队脚本响应 returned 到顺序发出的请求。第一个请求由第一个排队的响应提供服务;第二个请求由第二个排队的响应提供服务;并且等等。"
此序列不适用于并行请求。
为了处理响应序列,我为我的 MockServer 实例编写了一个调度程序。 它收到一个请求,检查它是 URL 的端点和 returns 对应的响应
Dispatcher mDispatcher = new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) {
if (request.getPath().contains("/request1")) {
return new MockResponse().setBody("reponse1");
}
if (request.getPath().contains("/request2")) {
return new MockResponse().setBody("reponse2");
}
return new MockResponse().setResponseCode(404);
}
}
mMockServer.setDispatcher(mDispatcher);