Heim > Java > javaLernprogramm > Wie kann man mit Mockito eine Klasse mit einem „new()'-Aufruf verspotten?

Wie kann man mit Mockito eine Klasse mit einem „new()'-Aufruf verspotten?

Mary-Kate Olsen
Freigeben: 2024-10-30 00:23:29
Original
670 Leute haben es durchsucht

How Can You Mock a Class with a `new()` Call Using Mockito?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage