在 Mockito 中测试不确定响应
当测试涉及不确定响应的异步代码时,例如从 ExecutorCompletionService 获得的响应,有必要模拟非确定性方法行为。在这种情况下,一个方法可能会在使用相同参数进行后续调用时返回不同的对象。
要在 Mockito 中实现此目的,请使用带有多个参数的 thenReturn 方法。语法为:
when(method-call).thenReturn(value1, value2, value3);
您可以根据需要指定任意数量的参数,所有参数的类型相同。第一个值将在第一个方法调用时返回,第二个值将在第二个方法调用时返回,依此类推。返回所有值后,后续调用将继续返回最后一个值。
例如,以下代码演示了如何测试调用 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); }
在此示例中,前三个调用的 take 方法将首先返回任务 1,然后返回任务 2,最后返回任务 3。之后,所有后续调用都将返回相同的值(task3)。这允许测试不确定性响应,同时验证结果保持不变。
以上是如何在 Mockito 中模拟非确定性方法行为?的详细内容。更多信息请关注PHP中文网其他相关文章!