Тест с последовательными вызовами MockWebServer - PullRequest
0 голосов
/ 31 января 2019

Я пишу тест для Activity, который выполняет несколько последовательных вызовов к серверу.Мой MockWebServer смешивает последовательность откликов. Например, когда я делаю два последовательных запроса request1 и request2, он иногда возвращает Json request2 в ответ на request1 и Json request1 в ответ на request2.Как я могу указать, какой ответ MockWebServer должен возвращать на указанный запрос?

server.enqueue(new MockResponse()
                .setResponseCode(200)
                .setBody(readFromFile("response1 path"));

server.enqueue(new MockResponse()
                .setResponseCode(200)
                .setBody(readFromFile("response2 path"));

В документации сказано: «Поставить в очередь сценарии ответ, который будет возвращен на запрос, выполненный последовательно. Первый запрос обслуживается первымпоставленный в очередь ответ; второй запрос вторым поставленным в очередь ответом и т. д. "

Эта последовательность не работает в случае параллельных запросов.

1 Ответ

0 голосов
/ 01 февраля 2019

Для обработки последовательности ответов я написал диспетчер для моего экземпляра 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...