Параллельное выполнение тестов приводит к неправильному выводу Mosonserver
Я пишу тест для 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 ответ
Чтобы обработать последовательность ответов, я написал диспетчер для моего экземпляра 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);