Heim >Java >javaLernprogramm >Mockitos doReturn() vs. when(): Was ist der Unterschied bei der Verwendung von Spionageobjekten?
Den Unterschied zwischen doReturn() und when() von Mockito verstehen
Bei der Entwicklung von Spring MVC-Anwendungen wird Mockito zum Verspotten der Serviceschicht verwendet Objekte ist eine gängige Praxis. Beim Erkunden der Fähigkeiten von Mockito wird deutlich, dass sowohl doReturn(...).when(...) als auch when(...).thenReturn(...) anscheinend dieselbe Funktion ausführen. Dies wirft die Frage auf: Gibt es einen Unterschied zwischen diesen beiden Methoden?
Der Hauptunterschied zwischen doReturn() und when() wird deutlich, wenn Spionageobjekte (annotiert mit @Spy) anstelle von Mocks (annotiert mit @) verwendet werden. Mock).
doReturn() vs. when() mit Spied Objekte
Beispiel
Betrachten Sie den folgenden Code:
public class MyClass { protected String methodToBeTested() { return anotherMethodInClass(); } protected String anotherMethodInClass() { throw new NullPointerException(); } }
Testfall:
@Spy private MyClass myClass; // Works fine, does not invoke anotherMethodInClass() doReturn("test").when(myClass).anotherMethodInClass(); // Throws NullPointerException because anotherMethodInClass() is invoked when(myClass.anotherMethodInClass()).thenReturn("test");
Zusammenfassend lässt sich sagen, dass Sie mit doReturn() bei der Verwendung von Spionageobjekten die Methodenausführung überspringen und die Rückgabe direkt festlegen können value, während when() die eigentliche Methode aufruft, bevor der gewünschte Wert zurückgegeben wird. Dieses Verständnis ist entscheidend, wenn Sie in Mockito mit ausspionierten Objekten arbeiten.
Das obige ist der detaillierte Inhalt vonMockitos doReturn() vs. when(): Was ist der Unterschied bei der Verwendung von Spionageobjekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!