我有一个 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/