Проблема Mockito - когда (java.lang.Void) в Stubber нельзя применить к void
Я не могу понять, почему doNothing
не работает для этого? Любые идеи?
@Captor
ArgumentCaptor<GenericClass<someOtherClass>> captor;
...
Mockito.doNothing().when(mockObject.methodToStub(captor.capture()));
Ошибка:
Exception: when(java.lang.Void) in Stubber cannot be applied to void
Ответы
Ответ 1
Этот заглушка ошибочен:
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong
methodToStub(...)
должен быть вне when
, если использовать этот стиль API (он должен содержать только макет):
doNothing().when(mockObject).methodToStub(captor.capture()); // correct
Тем не менее:
-
doNothing
- значение по умолчанию для методов void для макета.
- Вы можете использовать псевдонимы
BDDMockito
, которые позволяют вашему коду быть реальным.
Ответ 2
Хотя вы спрашиваете, почему doNothing не работает, я понимаю, что вы действительно хотите захватить аргумент метода methodToStub.
Самый простой способ сделать это:
verify(mockObject).methodToStub(captor.capture());
Если вы просто хотите, чтобы вы притворялись, что ничего не делаете при вызове метода void, помните, что ничего не делает, это default для методов void для mocks.
Если по какой-то причине вам все равно нужно позвонить doNothing
, вам следует позаботиться о позиции скобок. Он должен выглядеть следующим образом:
doNothing().when(mockObject).methodToStub(any());
или doNothing(), когда (mockObject).methodToStub(captor.capture());.