Java 指定要传递到Mockito doReturn方法中的方法的特定枚举
我有一个junit测试,在这个测试中,我在一个类中模拟了一个对象。让我们调用类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
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版中被删除