指定传递到 Mockito doReturn 方法中的方法的特定枚举

Dev*_*per 4 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
   }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我已经在这里看到了答案,但我不想只说该类的任何实例,我想指定该类中的某个枚举。

Ant*_*ond 6

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

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

Mockito.doReturn("Goodbye").when(mock).execute(Matchers.eq(dummyEnum.ENUM_B), anyObject());
Run Code Online (Sandbox Code Playgroud)