ホームページ >Java >&#&チュートリアル >Mockitoを使用してクラス内のメソッドを部分的にモックするにはどうすればよいですか?

Mockitoを使用してクラス内のメソッドを部分的にモックするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-12 15:51:24393ブラウズ

How to Partially Mock Methods in a Class Using Mockito?

Mockito を使用してクラス内の特定のメソッドをモックする方法

ソフトウェア テストでは、モックを使用すると依存関係やオブジェクトの動作をシミュレートできます。直接インスタンス化したくないクラス。 Mockito は、メソッドをモックし、メソッドとの対話を検証できる Java モック フレームワークです。

具体的には、クラスの特定のメソッドをモックし、他のメソッドはそのままにしておくというシナリオに遭遇することがあります。このアプローチは部分モッキングとして知られています。 Mockito を使用してこれを実現する方法は次のとおりです。

// 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();

この方法では、getPrice() メソッドと getQuantity() メソッドのみがモックされ、getValue() は元のコードを実行します。

さらに、CALLS_REAL_METHODS 引数を次のように使用できます。 Mockito.mock():

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

これにより、スタブ化されていない呼び出しが実際の実装に委任されます。

ただし、この例では getPrice() と getQuantity() のみをモックしていることに注意することが重要です。 getValue() の実装は実際の戻り値に依存するため、正しく動作しません。代わりに、モックを完全に避けることを検討してください:

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

以上がMockitoを使用してクラス内のメソッドを部分的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。