Выбрасывание исключения из Mockito
Я хочу выбросить ContentIOException
из метода, подпись которого выглядит так.
public void putContent(InputStream is) throws ContentIOException.
Когда я пытаюсь выбросить ContentIOException
из Mockito, например:
when(StubbedObject.putContent(contentStream)).thenThrow(ContentIOException.class);
Я получаю следующую ошибку компиляции:
The method when(T) in the type Mockito is not applicable for the arguments (void).
Что я делаю неправильно?
Ответы
Ответ 1
Посмотрите эту ссылку в официальном API. Вы хотите изменить способ создания вашего звонка и настроить аргумент, так как это метод void
, который вы ожидаете выдать исключение.
doThrow(new ContentIOException()).when(StubbedObject).putContent(contentStream);
Ответ 2
Вы можете использовать следующий код
when(testRepositoryMock.findOne(123)).thenThrow(new NullPointerException());
Затем после того, как вы сможете проверить свою логику
String erroResponse= service.testMethodForResponse(accountNum);
JSONObject jsonObj = new JSONObject(erroResponse);
String _acNo = jsonObj.getString("accountNum");
assertEquals(accountNum, _acNo);
}
Если вы используете Spring boot, тогда добавьте top of class
@SpringBootTest
@RunWith(MockitoJUnitRunner.class)
Внутри класса вам нужно ввести объект
@InjectMocks //actual object you want to get test coverage
private TestService testService;
@Mock //Mock object which call by actual object for mocking
private testRepository testRepositoryMock;
Ссылка ссылки: http://www.baeldung.com/mockito-behavior