Я тестирую определенный класс. Этот класс внутренне создает экземпляр объекта GetMethod, который передается объекту «HttpClient», который вводится в тестируемый класс.Захват аргумента в Mockito
Я издеваюсь над классом «HttpClient», но мне также нужно будет изменить поведение одного метода класса «GetMethod». Я играю с ArgumentCaptor, но, похоже, я не могу уловить экземпляр объекта в вызове «когда».
Пример:
HttpClient mockHttpClient = mock(HttpClient.class);
ArgumentCaptor<GetMethod> getMethod = ArgumentCaptor.forClass(GetMethod.class);
when(mockHttpClient.executeMethod(getMethod.capture())).thenReturn(HttpStatus.SC_OK);
when(getMethod.getValue().getResponseBodyAsStream()).thenReturn(new FileInputStream(source));
Ответ:
org.mockito.exceptions.base.MockitoException:
No argument value was captured!
You might have forgotten to use argument.capture() in verify()...
...or you used capture() in stubbing but stubbed method was not called.
Be aware that it is recommended to use capture() only with verify()
Вы отправили его, когда редактировали мой ответ. Ну, мы оба решили это одинаково :) – amorfis
Да, я не могу найти другого способа сделать это с помощью доступных инструментов. Грязный хак :), но он скалывает, когда он работает! –