JUnitテスト:Mockitoでメソッドの呼び出しの回数によって返却値を変える方法

こんにちは、さるまりんです。

今日はJUnitで単体テストしているときにちょっと悩んだことをメモしておきます。

モックを使ってメソッドの返却値を模倣してテストしています。

例えば以下のようなコードでSomeSearchのオブジェクトsomesearchメソッドを呼ぶ際に、その引数の値にかかわらず、文字列"any time"を返却値とすることができます。

SomeSearch some = Mockito.mock(SomeSearch.class);
when(some.search(any()).thenReturn("any time");

このコードではプログラムの中でsome.search()が何度呼ばれても返却値は"any time"です。

1度目と2度目の返却値を変えたい。そんな時は次のようにthenReturn()を続けて値を変えることができます。

when(some.search(any())
    .thenReturn("1st time")
    .thenReturn("2nd time");

上記のコードは次のように書くこともできます。

when(some.search(any())
    .thenReturn("1st time", "2nd time");

返却値2、3回分くらいならこちらの方が簡潔かな。

必要なimportを忘れるのでそちらもメモ。

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import org.mockito.Mockito;

テストって大事!
人なのでミスはありますが、出来る限り安心してプログラムを提供できるように頑張ります。

読んでくださってありがとうございます。

それではまた!