因此,我试图模拟采用单个参数的方法getPremium
,即PanicLevel
的enum
实例。它需要根据传入的PanicLevel
返回不同的double值。
如果我想按枚举值执行此操作,则应使用thi之类的方法。
Mockito.when(mockData.getPremium(PanicLevel.NORMAL)).thenReturn(1.1);
但这需要每个枚举值一行。我宁愿做这样的事情:
Mockito.when(mockData.getPremium(anyPanicLevel())).thenReturn(premiums.get(passedInPanicLevel());
显然这是无效的...但是类似的事情应该是...
我发现了这个,但是它在某处使用了
anyString
方法:mockito return value based on property of a parameter
如何使Mockito做到这一点,而不必对每个键重复执行
when
? 最佳答案
您可以使用Answer
:
Mockito.when(mockData.getPremium(Matchers.any(PanicLevel.class)))
.thenAnswer(new Answer<Double>() {
@Override
public Double answer(InvocationOnMock arg0) throws Throwable {
PanelLevel panicLevel = (PanicLevel) arg0.getArguments()[0];
return premiums.get(panicLevel);
}
});
仅供参考:
anyString()
可能只是Matchers.anyString()
。