同じ引数を持つ同じメソッドへの複数の呼び出しでMockitoを使用する 質問する

同じ引数を持つ同じメソッドへの複数の呼び出しでMockitoを使用する 質問する

スタブ メソッドが後続の呼び出しで異なるオブジェクトを返すようにする方法はありますか? からの非決定的な応答をテストするためにこれを実行したいと思いますExecutorCompletionService。つまり、メソッドの戻り順序に関係なく、結果が一定のままであることをテストします。

テストしようとしているコードは次のようになります。

// Create an completion service so we can group these tasks together
ExecutorCompletionService<T> completionService =
        new ExecutorCompletionService<T>(service);

// Add all these tasks to the completion service
for (Callable<T> t : ts)
    completionService.submit(request);

// As an when each call finished, add it to the response set.
for (int i = 0; i < calls.size(); i ++) {
    try {
        T t = completionService.take().get();
        // do some stuff that I want to test
    } catch (...) { }        
}

ベストアンサー1

いかがでしょうか

when( method-call ).thenReturn( value1, value2, value3 );

thenReturn の括弧内には、正しい型であれば、任意の数の引数を入れることができます。メソッドが最初に呼び出されたときに最初の値が返され、次に 2 番目の回答が返されます。他の値がすべて使用されると、最後の値が繰り返し返されます。

おすすめ記事