Heim > Java > javaLernprogramm > Wie kann ich Methoden in Mockito selektiv verspotten, um sie teilweise zu verspotten?

Wie kann ich Methoden in Mockito selektiv verspotten, um sie teilweise zu verspotten?

Patricia Arquette
Freigeben: 2024-12-20 20:11:10
Original
915 Leute haben es durchsucht

How Can I Selectively Mock Methods in Mockito for Partial Mocking?

Verwenden Sie Mockito für die selektive Methodenverspottung

Mockito bietet Flexibilität beim Verspotten bestimmter Methoden innerhalb einer Klasse. Durch die Nutzung partieller Mocks können Entwickler auswählen, welche Methoden überschrieben werden sollen, während andere intakt bleiben.

Stellen Sie sich beispielsweise eine Stock-Klasse mit den Methoden getPrice(), getQuantity() und getValue(). Möglicherweise möchten Sie die ersten beiden Methoden für ihre Rückgabewerte verspotten, getValue() jedoch sein ursprüngliches Verhalten beibehalten.

Mit einem teilweisen Mockito in Mockito können Sie diese Präzision erreichen. Das

Stock-Objekt wird als Mock instanziiert, während für getPrice() und getQuantity() spezifische Erwartungen festgelegt werden. Hier ist ein Beispiel:

Stock stock = mock(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
Nach dem Login kopieren
Durch den Aufruf von thenCallRealMethod() für

getValue() behalten Sie die tatsächliche Implementierung bei:

when(stock.getValue()).thenCallRealMethod();
Nach dem Login kopieren
Alternativ kann ein Spion sein eingesetzt, wobei alle Methoden zunächst auf die reale Implementierung verweisen. Nur die explizit gestuften Methoden übernehmen das geänderte Verhalten. Hier ist der Spionageansatz:

Stock stock = spy(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
Nach dem Login kopieren
Beachten Sie, dass es bei der Verwendung von Spionen wichtig ist, den Aufruf der echten Methode innerhalb einer Stubbed-Methode zu vermeiden.

Eine weitere Option beinhaltet das Mockito.CALLS_REAL_METHODS-Flag:

Stock MOCK_STOCK = Mockito.mock( Stock.class, CALLS_REAL_METHODS );
Nach dem Login kopieren
Dieser Ansatz delegiert ungestufte Methoden an ihre tatsächlichen Implementierungen.

Im angegebenen Stock-Beispiel kann diese partielle Verspottungsstrategie jedoch immer noch fehlschlagen, da

getValue() sowohl von price als auch von abhängig ist Menge direkt, nicht nur auf ihre Getter.

Darüber hinaus sollten Sie darüber nachdenken, Spott gänzlich zu vermeiden, wenn möglich:

Das obige ist der detaillierte Inhalt vonWie kann ich Methoden in Mockito selektiv verspotten, um sie teilweise zu 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