Подтвердить что ты не робот

Выбрасывание исключения из 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).

Что я делаю неправильно?

4b9b3361

Ответ 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