Es scheint, dass mockito nur überprüft, ob eine Methode eines Scheinobjekts aufgerufen wird und das Scheinobjekt immer so etwas hat doReturn().when(mock object)
Aber kann ich ein Scheinobjekt erstellen und definieren doReturn().when(mock object)
und überprüfen, ob eine Methode eines anderen Objekts aufgerufen wird?
Folgendes möchte ich tun: Ich definiere eine mockEnvironment und gebe eine Antwort zurück, egal was passiert. Aber dann möchte ich überprüfen, ob verschiedene Methoden von anotherObj in verschiedenen Fällen aufgerufen werden.
Wie geht das?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase () {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) {
...
return createResponse(...);
}
quelle
Kommentieren Sie das nicht nachgebildete Objekt mit
@Spy
Anmerkungen und suchen Sie nachverify()
. Überprüfen Sie diesquelle