首页  >  文章  >  Java  >  如何在 Mockito 中模拟非确定性方法行为?

如何在 Mockito 中模拟非确定性方法行为?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-28 04:30:02988浏览

How to Mock Nondeterministic Method Behaviors in Mockito?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn