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
Patricia ArquetteOriginal
2024-12-20 20:11:10917Durchsuche

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);
Durch den Aufruf von thenCallRealMethod() für

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

when(stock.getValue()).thenCallRealMethod();
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);
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 );
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!

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