Безопасность типа аргумента отсутствует с doReturn()
.
Из Mockito.doReturn()
Javadoc (ударение не мое):
Используйте doReturn()
в тех редких случаях, когда вы не можете использовать
when(Object)
.
Остерегайтесь того, что Mockito.when (объект) всегда рекомендуется для заглушки
потому что это аргумент, типобезопасный и более читаемый (особенно когда
озвучивание последовательных звонков).
Вы на самом деле не используете when()
так, как вам нужно, и поэтому вы получите странный результат, поскольку он разрешающий.
Вы хотите заглушить возвращаемое значение Mock:
Mockito.doReturn(-1).when(foo).myMethod(Mockito.any());
вы не хотите заглушить сам макет:
Mockito.doReturn(-1).when(foo);
Что не имеет смысла: почему ссылка foo
должна что-то возвращать?
Или лучше использовать Mockito.when()
, который не настолько разрешающий:
Mockito.when(foo).thenReturn(-1); // same oddity will not compile
Mockito.when(foo.myMethod(any())).thenReturn(-1); // but it will compile