java - 在 Mockito doReturn 方法中指定传递给方法的特定枚举

标签 java junit mockito

我有一个 junit 测试,其中我在类中模拟了一个对象。让我们用名为 mocker 的 MyManager 的 @Mock 调用类 Mocker

示例类:

public class Mocker {
   private MyManager myManager;

   public void myMethod() {
       String x = "test";
       final String result1 =  this.myManager.execute(dummyEnum.ENUM_A, x);
       final String result2 =  this.myManager.execute(dummyEnum.ENUM_B, x);

       if(result1 == true) {
           //Do something
       }
       if(result2 == true) {
           //Do something else
       }
   }

   public enum dummyEnum {
        ENUM_A,ENUM_B
   }
}

我当前的 junit 测试使用以下代码:doReturn(null).when(mocker).execute(any(dummyEnum.class), anyObject());

但是,这将为 result1 和 result2 返回 null。 我如何指定当使用 ENUM_A 执行 execute() 时它返回 Hello 的字符串,使用 ENUM_B 的 execute() 返回字符串 Goodbye

我看到了 answer here但我不想只说那个类的任何实例,我想从那个类中指定一个特定的枚举。

最佳答案

使用 Matchers 类的 eq() 方法(代表等于)。

Mockito.doReturn("Hello").when(mock).execute(Matchers.eq(dummyEnum.ENUM_A), anyObject());

Mockito.doReturn("Goodbye").when(mock).execute(Matchers.eq(dummyEnum.ENUM_B), anyObject());

关于java - 在 Mockito doReturn 方法中指定传递给方法的特定枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817522/

相关文章:

java - 验证请求参数中的日期(ISO-8601)(spring-boot)

hibernate - DbUnit NoSuchTableException 与 Spring、Hibernate、HSQSLB

java - Junits 的 Guice 和 Mockto

EasyMock 与 Mockito : design vs maintainability?

java - 将逗号分隔的字符串传递给存储过程中的 IN 子句

java spring XML编程的要点是什么?

java - JUnit 测试包含 RestTemplate 交换调用的 void 方法

java - 覆盖 JUnit 注释?

java - 使用 Mockito 在 JUnit 中使用 PowerMock 和 PowerRule 获取 javassist.NotFoundException

java - 如何在actionlistener中使用for循环变量