Mockito を使用してスーパークラスの特定のメソッド呼び出しのみをモックする
Mockito を使用して単体テストを実行する場合、特定のメソッド呼び出しのみをモックする必要がある場合があります。他の呼び出しには影響を与えずに、スーパークラス内のメソッドを呼び出します。次のシナリオを考えてみましょう:
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } }</code>
この例では、ChildService クラス内の super.save() への呼び出しのみをモックし、他の save() メソッド呼び出しの動作を保持します。
スパイとスタブを使用した解決策
リファクタリングは実行可能かもしれないが解決策ですが、常に実現できるとは限りません。このような場合、スパイおよびスタブ手法を活用して、目的のモッキング動作を実現できます。
<code class="java">@Test public void testSave() { ChildService classToTest = Mockito.spy(new ChildService()); // Prevent/stub logic in super.save() Mockito.doNothing().when((BaseService)classToTest).validate(); // When classToTest.save(); // Then verify(classToTest).load(); }</code>
説明:
スパイとスタブ化すると、目的のモック動作を効果的にシミュレートできるため、元の機能を維持しながらスーパークラス内の特定のメソッド呼び出しをテストできます。
以上がMockitoを使用してスーパークラス内の特定のメソッド呼び出しのみをモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。