Mockito での不確定応答のテスト
ExecutorCompletionService から取得したものなど、不確定応答を含む非同期コードをテストする場合、次のことが必要になります。非決定的なメソッドの動作を模擬します。このシナリオでは、メソッドは同じ引数を使用した後続の呼び出しで異なるオブジェクトを返す可能性があります。
Mockito でこれを実現するには、複数の引数を指定して thenReturn メソッドを使用します。構文は次のとおりです。
when(method-call).thenReturn(value1, value2, value3);
すべて同じ型の引数を必要なだけ指定できます。最初の値は最初のメソッド呼び出しで返され、2 番目の値は 2 回目のメソッド呼び出しで返され、以下同様になります。すべての値が返されると、後続の呼び出しでは最後の値が返され続けます。
たとえば、次のコードは、ExecutorCompletionService を呼び出してタスクを取得するメソッドをテストする方法を示しています。
// Arrange ExecutorCompletionService<T> completionService = mock(ExecutorCompletionService.class); when(completionService.take()).thenReturn(task1, task2, task3); // Act for (int i = 0; i < 3; i++) { T task = completionService.take().get(); // Assert assertEquals(expectedTasks[i], task); }
この例では、最初の 3 回の呼び出しで、take メソッドは最初に task1、次に task2、最後に task3 を返します。その後、後続のすべての呼び出しに対して同じ値 (task3) が返されます。これにより、結果が一定のままであることを検証しながら、非決定的な応答のテストが可能になります。
以上がMockito で非決定的メソッドの動作をモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。