Heim  >  Artikel  >  Java  >  Hier sind einige Titeloptionen, die sich auf den Frageaspekt und das Kernproblem/die Kernlösung konzentrieren: Option 1 (Direkt): * Wie verspotte ich mit „new()“ initialisierte Objekte mit Mockito Spies? Option 2 (Proble

Hier sind einige Titeloptionen, die sich auf den Frageaspekt und das Kernproblem/die Kernlösung konzentrieren: Option 1 (Direkt): * Wie verspotte ich mit „new()“ initialisierte Objekte mit Mockito Spies? Option 2 (Proble

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 11:11:30281Durchsuche

Here are a few title options, focusing on the question aspect and the core problem/solution:

Option 1 (Direct): 
* How to Mock Objects Initialized with `new()` Using Mockito Spies? 

Option 2 (Problem-Focused):
* Mockito Mocking Challenge: Testing Classe

Testen von Klassen mit new()-Operatoraufrufen mit Mockito

Das Verspotten von Klassen, die Instanzen mit dem new()-Operator initialisieren, kann besonders herausfordernd sein beim Umgang mit Legacy-Code. Ein solches Beispiel ist die login()-Methode in der TestedClass-Klasse, die ein LoginContext-Objekt instanziiert.

Die Herausforderung entsteht beim Versuch, diese Klasse mit Mockito zu testen, da vor der Instanziierung eine JAAS-Sicherheitseinrichtung erforderlich ist. Ohne den externen Aufruf von LoginContext scheint es unmöglich, das Objekt zu verspotten.

Lösung: Verwendung von Mockito-Spionen

Um dieses Hindernis zu überwinden, stellt Mockito Spione bereit, eine einzigartige Funktion, die dies ermöglicht Sie können Spione für echte Objekte erstellen. Spione rufen die tatsächlichen Methoden des ausspionierten Objekts auf, Sie können jedoch bei Bedarf bestimmte Methoden nachahmen oder durchsetzen.

Im Fall der TestedClass lautet die Lösung wie folgt:

<code class="java">TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);

when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>

Hier erstellen wir einen Spion für die TestedClass, der es uns effektiv ermöglicht, mit den echten Methoden zu interagieren und das erwartete Verhalten durchzusetzen. Indem wir die login()-Methode verspotten, können wir den Rückgabewert steuern und die an sie übergebenen Parameter überprüfen.

Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die sich auf den Frageaspekt und das Kernproblem/die Kernlösung konzentrieren: Option 1 (Direkt): * Wie verspotte ich mit „new()“ initialisierte Objekte mit Mockito Spies? Option 2 (Proble. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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