1. ホーム
  2. java

[解決済み] Mockitoを使用してクラスのメンバ変数をモック化する

2022-04-27 17:13:02

質問

私は開発、特にユニットテストについて初心者です。 私は私の要件は非常に単純だと思いますが、私はこれについての他の考えを知りたいです。

例えば、次のような2つのクラスがあるとします。

public class First {

    Second second ;

    public First(){
        second = new Second();
    }

    public String doSecond(){
        return second.doSecond();
    }
}

class Second {

    public String doSecond(){
        return "Do Something";
    }
}

をテストするためのユニットテストを書いているとしましょう。 First.doSecond() メソッドを使用します。しかし、もし私が Second.doSecond() クラスはこのようなものです。 私はこれを行うためにMockitoを使用しています。

public void testFirst(){
    Second sec = mock(Second.class);
    when(sec.doSecond()).thenReturn("Stubbed Second");

    First first = new First();
    assertEquals("Stubbed Second", first.doSecond());
}

モッキングが効かず、アサーションに失敗しているのがわかります。 テストしたいクラスのメンバ変数をモック化する方法はないのでしょうか??

どのように解決するのですか?

モックを渡せるように、メンバ変数にアクセスする方法を用意する必要があります(最も一般的な方法は、パラメータを受け取るセッタ・メソッドやコンストラクタでしょう)。

もしあなたのコードがこれを行う方法を提供しないなら、それはTDD(テスト駆動開発)のための誤ったファクタリングです。