「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Mockito で非決定的メソッドの動作をモックするにはどうすればよいですか?

Mockito で非決定的メソッドの動作をモックするにはどうすればよいですか?

2024 年 11 月 14 日公開
ブラウズ:797

How to Mock Nondeterministic Method Behaviors in Mockito?

Mockito での不確定な応答のテスト

ExecutorCompletionService から取得したものなど、不確定な応答を含む非同期コードをテストする場合、次のことが必要になります。非決定的なメソッドの動作を模擬します。このシナリオでは、メソッドは同じ引数を使用した後続の呼び出しで異なるオブジェクトを返すことがあります。

Mockito でこれを実現するには、複数の引数を指定して thenReturn メソッドを使用します。構文は次のとおりです:

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

すべて同じ型の引数を必要な数だけ指定できます。最初の値は最初のメソッド呼び出しで返され、2 番目の値は 2 回目のメソッド呼び出しで返され、以下同様になります。すべての値が返されると、後続の呼び出しでは最後の値が引き続き返されます。

たとえば、次のコードは、ExecutorCompletionService を呼び出してタスクを取得するメソッドをテストする方法を示しています。

// Arrange
ExecutorCompletionService completionService = mock(ExecutorCompletionService.class);
when(completionService.take()).thenReturn(task1, task2, task3);

// Act
for (int i = 0; i 

この例では、最初の 3 回の呼び出しで、take メソッドは最初に task1、次に task2、最後に task3 を返します。その後、後続のすべての呼び出しに対して同じ値 (task3) が返されます。これにより、結果が一定のままであることを検証しながら、非決定的な応答のテストが可能になります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3