Mockitoのメソッド呼び出し回数によって返却値を変更する方法

java

「Mockito」で作成したモッククラスのメソッド返却値を呼び出し回数によって変えることができますので、今回はその変更方法を紹介します。

for文などのループ処理で、ループ中にメソッドの返却値を変更したいときにこの方法を使ってください。

[スポンサーリンク]

呼び出し回数ごとに返却値を変更する

Listのgetメソッドの呼び出し回数によって返却値が異なるロジックです。

public void test1() {
    List<String> list = Mockito.mock(List.class);
    Mockito.when(list.get(Mockito.anyInt()))
        .thenReturn("1回目の呼び出し")
        .thenReturn("2回目の呼び出し")
        .thenReturn("3回目の呼び出し");
    
    System.out.println(list.get(0));
    System.out.println(list.get(0));
    System.out.println(list.get(0));
}
>実行結果
1回目の呼び出し
2回目の呼び出し
3回目の呼び出し

注意

上記のサンプルロジックで4回目の呼び出しをすると、3回目の呼び出し値が返却されます。
list.get(0)を4回実行すると以下のような結果となります。

>実行結果
1回目の呼び出し
2回目の呼び出し
3回目の呼び出し
3回目の呼び出し

最後に

メソッドの呼び出し回数によって返却値を変更する方法は、junit内でループ処理をするときによく使います。

呼び出し回数によって返却値を変えるのは、.thenReturnを数珠つなぎにするとだけ覚えておけばOKです。

それでは!