Eine Klasse mit einem New()-Aufruf mit Mockito verspotten
Legacy-Klassen instanziieren Objekte oft intern, was es schwierig macht, sie mit Mockito zu testen Frameworks wie Mockito. Dies wird deutlich, wenn komplexe Abhängigkeiten eingerichtet werden, beispielsweise Sicherheitskontexte, die eine externe Einrichtung erfordern.
Betrachten Sie die Beispielklasse:
<code class="java">public class TestedClass { public LoginContext login(String user, String password) { LoginContext lc = new LoginContext("login", callbackHandler); } }</code>
Wir möchten diese Klasse testen, aber die login() Die Methode instanziiert ein LoginContext-Objekt, wodurch das Verspotten ohne Umgestaltung des Codes erschwert wird.
Kann Mockito den LoginContext verspotten?
Ja, es ist möglich, die LoginContext-Klasse mit Mockito zu verspotten Nutzung der leistungsstarken Funktion von Spionen. Im Gegensatz zu Stubs rufen Spione die echten Methoden des ausspionierten Objekts auf (es sei denn, eine Methode wurde mit Stubs versehen).
Verwendung von Spies zum Verspotten des LoginContext
Um das zu verspotten LoginContext ohne den Quellcode zu ändern, können wir den folgenden Ansatz verwenden:
<code class="java">TestedClass tc = spy(new TestedClass()); LoginContext lcMock = mock(LoginContext.class); when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
Fazit
Durch den strategischen Einsatz von Spionen können wir effektiv Klassen verspotten, die Objekte intern instanziieren , auch wenn der Originalcode unberührt bleibt. Mit dieser Technik können wir solche Klassen effizient testen und sicherstellen, dass ihr Verhalten den Erwartungen entspricht.
Das obige ist der detaillierte Inhalt vonWie kann man mit Mockito eine Klasse mit einem „new()'-Aufruf verspotten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!