Wenn ich Mocks für Komponententests verwende, muss ich oft prüfen, ob eine bestimmte Methode des Mocks aufgerufen wird mit den richtigen Argumenten. Das bedeutet, dass ich irgendwie einen Weg finden muss, um zu sehen, was an die betreffende Methode weitergegeben wird.Die Verifizierungsmethode von Mockito stört die Überprüfung von DoAnswer
1 * serviceMock.operate(*_) >> { args ->
def argument = args[0]
assert expectedValue = argument.actualValue
}
Mit Mockito (und JUnit), dem einzigen Weg, ich glaube, dies getan ist durch die Verwendung doAnswer
und verify
, so etwas wie sein kann: In Spock kann dies wie mit etwas getan wird
doAnswer(new Answer() {
//check arguments here
}).when(service).operate(any(Data.class));
dann muss ich überprüfen, ob die Operation tatsächlich mit aufgerufen wird:
verify(service).operate(any(Data.class));
der obige Code jedoch stört doAnswer
, als ob es ein Akt ist Aufruf an die betreffende Methode. Wie kann ich das umgehen, damit ich beide überprüfen kann, dass die Methode aufgerufen wird, und überprüfe, ob die Argumente korrekt sind?
haben Sie versuchen ArgumentCaptor? –
[diese Frage] (http://stackoverflow.com/questions/12295891/how-to-use-argumentcaptor-for-stubbing) sollte nützlich sein – troig
Nein, ich habe noch nie zuvor davon gehört. –