6

我正在为一个对服务器进行多次连续调用的 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"));

在文档中说“排队脚本响应将返回到按顺序发出的请求。第一个请求由第一个排队响应提供服务;第二个请求由第二个排队响应提供;依此类推。”

此序列在并行请求的情况下不起作用。

4

1 回答 1

15

为了处理响应序列,我为我的 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);
于 2019-02-01T11:28:59.420 回答