ホームページ  >  記事  >  Java  >  Mockito を使用してスーパークラスからのメソッド呼び出しをモックする方法: 実践ガイド

Mockito を使用してスーパークラスからのメソッド呼び出しをモックする方法: 実践ガイド

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-01 04:42:02755ブラウズ

How to Mock a Method Call from a Superclass with Mockito: A Practical Guide

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 サイトの他の関連記事を参照してください。

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