我正在编写一个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"));
在文档中,它被称为“排队脚本响应被返回到按顺序发出的请求。第一个请求由第一个排队响应提供;第二个请求由第二个排队响应提供;依此类推。”
在并行请求的情况下,此序列不起作用。
为了处理响应序列,我为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);