Mockito の課題の克服: スーパークラスからのメソッド呼び出しをモックする
Java モック フレームワークである Mockito は、メソッド呼び出しを分離するための強力なツールを提供しますテスト中。ただし、特定のシナリオでは、特に継承を扱う場合、特定の呼び出しのみをモックする必要があります。
次のクラス階層を考えてみましょう。
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } } </code>
目標は、super.save( への呼び出しのみをモックすることです。
1 つのアプローチでは、Mockito の spy() メソッドを戦略的に使用して ChildService クラスのモックを作成します。 super.save() で呼び出される BaseService クラスの validate() メソッドをスタブすることで、不要なメソッド呼び出しを効果的に防止します。
<code class="java">class BaseService { public void validate(){ fail(" I must not be called"); } public void save(){ //Save method of super will still be called. validate(); } } class ChildService extends BaseService{ public void load(){} public void save(){ super.save(); load(); } } @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>
このアプローチでは、super.save() への呼び出しが効果的に分離されます。 )最初の呼び出しでは元のメソッドの呼び出しを許可します。これにより、テストは厳密な検査の下で、目的のメソッドに特に焦点を当てたものになります。
以上がMockito を使用してスーパークラスからのメソッド呼び出しをモックする方法: 実践ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。