Heim >Java >javaLernprogramm >Mockito: „doReturn()' vs. „when()': Wann sollten Sie Which bei ausspionierten Objekten verwenden?
Bei der Verwendung des Mocking-Frameworks Mockito zur Verbesserung der Testfunktionen stoßen Entwickler häufig auf doReturn() und when()-Methoden. Während beide Methoden dem Stubbing von Methodenaufrufen dienen, besteht ein subtiler Unterschied zwischen ihnen bei der Arbeit mit ausspionierten Objekten (annotiert mit @Spy).
when(...).thenReturn(...):
doReturn(...).when(...):
Bedenken Sie Folgendes MyClass:
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
doReturn(...).when(...):
@Spy private MyClass myClass; // Works as expected doReturn("test").when(myClass).anotherMethodInClass();
when(...).thenReturn(...):
// Throws a NullPointerException when(myClass.anotherMethodInClass()).thenReturn("test");
In diesem Szenario doReturn() stellt sicher, dass die Ausnahme in anotherMethodInClass() vermieden wird und dennoch der gewünschte Wert zurückgegeben wird. Im Gegensatz dazu löst when() den eigentlichen Methodenaufruf aus, was dazu führt, dass die NullPointerException geworfen wird.
Daher hängt die Wahl zwischen doReturn() und when() bei der Arbeit mit ausspionierten Objekten davon ab, ob Sie aufrufen möchten die eigentliche Methode oder umgehen Sie sie ganz.
Das obige ist der detaillierte Inhalt vonMockito: „doReturn()' vs. „when()': Wann sollten Sie Which bei ausspionierten Objekten verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!