Mockitoメモ
呼び出し時の変数を使って値を返すスタブ
doAnswer (かwhenのthenAnswer)を使うと、スタブの呼び出しの引数を使って返値を決めることができます。
例えば、スタブの返す値を引数によって変化させたいとき、引数と返値のマップを用意しておくとこのようにスタブが書けます。
doAnswer(invocation -> someMap.get(invocation.getArguments()[0])) .when(mock).someMethod(anyString());
doAnswerは、Answerオブジェクトを引数にとります。 Answerクラスは、InvocationOnMockオブジェクトを引数にとって値を返すanswer()メソッドだけを持つクラスです。 ということは上記のようにラムダ式が使えます。
InvocationOnMock (Mockito 1.10.19 API)