Heim >Java >javaLernprogramm >Wie kann man Methoden in einer Klasse mit Mockito teilweise verspotten?

Wie kann man Methoden in einer Klasse mit Mockito teilweise verspotten?

DDD
DDDOriginal
2024-12-12 15:51:24393Durchsuche

How to Partially Mock Methods in a Class Using Mockito?

So verspotten Sie bestimmte Methoden in einer Klasse mit Mockito

Beim Softwaretest können Sie durch Verspotten das Verhalten einer Abhängigkeit oder einer Abhängigkeit simulieren Klasse, die Sie nicht direkt instanziieren möchten. Mockito ist ein Java-Mocking-Framework, mit dem Sie Methoden verspotten und Interaktionen mit ihnen überprüfen können.

Insbesondere können Sie auf Szenarien stoßen, in denen Sie bestimmte Methoden einer Klasse verspotten möchten, während andere unberührt bleiben. Dieser Ansatz wird als partielle Verspottung bezeichnet. So können Sie dies mit Mockito erreichen:

// Mock the Stock class with partial mocking
Stock stock = mock(Stock.class);

// Mock specific methods
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);

// Leave 'getValue()' unmocked
// It will execute the actual Stock.getValue() calculation
when(stock.getValue()).thenCallRealMethod();

Auf diese Weise werden nur die Methoden getPrice() und getQuantity() verspottet, während getValue() den Originalcode ausführt.

Zusätzlich können Sie das Argument CALLS_REAL_METHODS mit verwenden Mockito.mock():

Stock MOCK_STOCK = Mockito.mock(Stock.class, CALLS_REAL_METHODS);

Dadurch werden ungestubbte Aufrufe an echte Implementierungen delegiert.

Es ist jedoch wichtig zu beachten, dass in Ihrem Beispiel nur getPrice() und getQuantity() verspottet werden. wird nicht richtig funktionieren, da die getValue()-Implementierung von ihren tatsächlichen Rückgabewerten abhängt. Erwägen Sie stattdessen, Verspottungen ganz zu vermeiden:

// Without mocks
Stock stock = new Stock(100.00, 200);
double value = stock.getValue();

Das obige ist der detaillierte Inhalt vonWie kann man Methoden in einer Klasse mit Mockito teilweise 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