Mag*_*yan 5 android-testing android-espresso mockwebserver
我正在为一个活动编写测试,该活动连续多次调用服务器。我的 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"));
Run Code Online (Sandbox Code Playgroud)
在文档中说“将脚本响应排入队列以返回到按顺序发出的请求。第一个请求由第一个入队响应提供服务;第二个请求由第二个入队响应提供服务;依此类推。”
在并行请求的情况下,此序列不起作用。
Mag*_*yan 11
为了处理响应序列,我为 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3651 次 |
| 最近记录: |