Я создаю общий общий mock-клиент для тестирования HTTP-взаимодействий.Для этого я хотел бы иметь возможность сделать несколько ответов одним и тем же методом.При обычной имитации это не будет проблемой:
when(mock.execute(any(), any(), any())).thenReturn(firstResponse, otherResponses)
Однако я использую частичную имитацию, где я просто хочу смоделировать метод, выполняющий HTTP-запрос, поскольку доступ кживая конечная точка или Интернет вообще в этом отношении в контексте, где выполняются юнит-тесты.
Так что я буду делать что-то вроде:
doReturn(response).when(spy).execute(hostCaptor.capture(), requestCaptor.capture(), contextCaptor.capture());
Однако я быхотел бы иметь возможность поддерживать более одного ответа (не так много "взаимодействия").Но нет метода doReturn, который принимает более одного ответа за раз.
Моей первой попыткой решения было сделать это итеративно:
Stubber stubber = null;
for (HttpResponse response : responses) {
if (stubber == null) {
stubber = doReturn(response);
} else {
stubber = stubber.doReturn(response);
}
}
stubber.when(spy).execute(hostCaptor.capture(), requestCaptor.capture(), contextCaptor.capture());
Однако при проверке это не удается проверить («Обнаружена незавершенная заглушка»).
Итак - есть ли способ достичь этого с помощью Mockito?
Спасибо за чтение.