ytnk531の日記

日々調べたことを書きます。

Mockitoメモ

呼び出し時の変数を使って値を返すスタブ

doAnswer (かwhenのthenAnswer)を使うと、スタブの呼び出しの引数を使って返値を決めることができます。

doAnswer

例えば、スタブの返す値を引数によって変化させたいとき、引数と返値のマップを用意しておくとこのようにスタブが書けます。

        doAnswer(invocation ->
                someMap.get(invocation.getArguments()[0]))
                .when(mock).someMethod(anyString());

doAnswerは、Answerオブジェクトを引数にとります。 Answerクラスは、InvocationOnMockオブジェクトを引数にとって値を返すanswer()メソッドだけを持つクラスです。 ということは上記のようにラムダ式が使えます。

InvocationOnMock (Mockito 1.10.19 API)

サンプルコード

引数を使ってスタブの返値を決める