连续调用MockWebServer进行测试

问题描述 投票:0回答:1

我正在编写一个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"));

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

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

android-espresso android-testing mockwebserver
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.