我正在编写一个Activity的测试,该测试连续多次调用服务器。 我的MockWebServer混合了响应序列,例如当我发出两个连续的请求request1和request2时,有时会返回request2的Json以响应request1,并返回request1的Json以响应request2。 如何指定MockWebServer必须返回到指定请求的响应?
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response1 path"));
server.enqueue(new MockResponse()
.setResponseCode(200)
.setBody(readFromFile("response2 path"));
在文档中说:“排队脚本响应返回到顺序发出的请求。第一个请求由第一个排队的响应服务;第二个请求由第二个排队的响应服务,依此类推。”
在并行请求的情况下,此序列无效。
答案 0 :(得分:0)
为处理响应顺序,我为MockServer实例编写了一个调度程序。 它收到一个请求,检查它的URL端点并返回相应的响应
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);