Heim >Java >javaLernprogramm >Wie kann ich Methoden in Mockito selektiv verspotten, um sie teilweise zu verspotten?
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. DasStock-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!