Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 指定要传递到Mockito doReturn方法中的方法的特定枚举_Java_Junit_Mockito - Fatal编程技术网

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

Java 指定要传递到Mockito doReturn方法中的方法的特定枚举,java,junit,mockito,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.EN

我有一个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(dummeynum.class),anyObject())

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

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

使用Matchers类的
eq()
方法(代表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());
我在这里看到了答案,但我不想只说任何例子 对于该类,我想指定该类中的某个枚举

在您的情况下,只需传递枚举实例:

import static org.mockito.Mockito.*;
...
Mockito.doReturn(null).when(mocker).execute(eq(DummyEnum.ENUM_A), any());
Mockito.doReturn(null).when(mocker).execute(eq(DummyEnum.ENUM_B), any());
注1:
any()
只能在您没有选择权或值无关紧要时使用(这种情况很少发生)。

注2:避免使用
Matchers
class。改用
ArgumentMatchers

在Mockito 2中,该类被弃用,以避免与
Hamcrest org.Hamcrest.Matchers
类发生名称冲突,javadoc还声明该类可能在3.0版中被删除