mockito doThrow возвращает null вместо вызова исключения - PullRequest
0 голосов
/ 14 декабря 2018

Мы пытаемся вызвать исключение, чтобы войти в один из наших блоков catch.Чтобы сделать это, мы хотели бы вызвать исключение при отправке запроса.Кажется, ни один из вариантов не работает.

   when(mockrestTemplate.postForObject(any(), any(), any())).thenThrow(new RestClientException("OOPS"));  
   doThrow(new RestClientException("OOPS")).when(mockrestTemplate).postForObject(any(), any(), any());

Если я использую doReturn и передаю ожидаемый объект, он работает как положено, он корректно его высмеивает.

Если я пытаюсь вызвать исключение, оно не вызывает исключение,и вместо этого строка выполняется полностью, в результате чего переменная становится равной нулю, как если бы макет возвратил нулевое значение.

Это сигнатура рассматриваемой функции, о которой идет речь:

 public <T> T postForObject(URI url, Object request, Class<T> responseType) throws RestClientException

1 Ответ

0 голосов
/ 14 декабря 2018

Прежде всего, я бы рекомендовал избегать использования any(), так как это может привести к непредсказуемому поведению перегруженных методов.

Во-вторых,

when(mockedObject.someMethod(isA(Type.class))).thenThrow(new Exception());

должно работать для правильной установкиup mock ... Если исключение не выдается в тестируемой системе для тестируемого метода, попробуйте проверить, вызывается ли метод (в конце вашего модульного теста)

verify(mockedObject).someMethod(isA(Type.class));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...