Je n'arrive pas à comprendre pourquoi le doNothing
ne fonctionne pas pour cela? Des idées?
@Captor
ArgumentCaptor<GenericClass<someOtherClass>> captor;
...
Mockito.doNothing().when(mockObject.methodToStub(captor.capture()));
L'erreur est:
Exception: when(Java.lang.Void) in Stubber cannot be applied to void
Ce talon est faux:
doNothing().when(mockObject.methodToStub(captor.capture())); // wrong
methodToStub(...)
doit être en dehors de when
si vous utilisez ce style API (il ne doit contenir que la maquette):
doNothing().when(mockObject).methodToStub(captor.capture()); // correct
Tho remarque cependant:
doNothing
est la valeur par défaut pour les méthodes void pour une maquette.BDDMockito
qui permettent à votre code d'être réel à la Développement basé sur le comportementBien que vous demandiez pourquoi doNothing ne fonctionne pas, je comprends que vous voulez réellement capturer l'argument de methodToStub.
La façon la plus simple de le faire serait:
verify(mockObject).methodToStub(captor.capture());
Si vous voulez juste que vous vous moquiez de ne rien faire du tout sur un appel de méthode void, souvenez-vous que ne rien faire est le par défaut pour les méthodes void sur les mocks.
Si, pour une raison quelconque, vous devez toujours appeler doNothing
, vous devez faire attention à la position des parenthèses. Ça devrait ressembler à ça:
doNothing().when(mockObject).methodToStub(any());
ou doNothing (). when (mockObject) .methodToStub (captor.capture ());