Java Mockito 当接受参数但有条件时

标签 java junit mockito conditional-statements expectations

我正在使用 Mockito 编写一个测试用例,并且必须编写对方法的期望(签名如下所示)

public Object process(Employee e);

在我的测试类中,我必须按如下方式模拟我的期望:

when(someClass.process("any Employee with id between 1 and 100.").thenReturn(object1);
when(someClass.process("any Employee with id between 101 and 200.").thenReturn(object2);

如何有条件地设定期望。

最佳答案

您可以使用 Mockito Answer 来完成

final ArgumentCaptor<Employee> employeeCaptor = ArgumentCaptor.forClass(Employee.class);

Mockito.doAnswer(invocation -> {
    Employee employee = employeeCaptor.getValue();
    if(employee.getId() > 1 && employee.getId() < 100)
      return object1;
    else if(employee.getId() > 101 && employee.getId() < 200)
      return object2;
    else someOtherObject;
}).when(someClass).process(employeeCaptor.capture());

关于Java Mockito 当接受参数但有条件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172051/

相关文章:

java - 如果两者都需要在同一类中的每个 @Test 中运行,如何使用多个凭据验证登录功能[在 Maven POM Selenium 项目中]

java - 当测试方法开始之前文件不存在时,为什么 getResourceAsStream() 返回 null?

java - 无法处理上下文配置的位置和类

unit-testing - 检测提交的单元测试代码覆盖率

python - 如何在 Python Mockito 中模拟类属性

java - Mockito "thenThrow"没有按预期抛出异常

java - 如何在 Android 中使用 Java 和 org.json 迭代这个 JSON 数组?

java - 在java中显示Gif动画

java - 如何模拟具体类的 void 方法

java - 在圆上绘制 N 个等距点,只给出一个点