所以我试图模拟一个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返回值基于参数的属性
如何在不重复when
每个键的情况下让Mockito执行此操作?
你可以使用Answer
:
Mockito.when(mockData.getPremium(Matchers.any(PanicLevel.class))) .thenAnswer(new Answer() { @Override public Double answer(InvocationOnMock arg0) throws Throwable { PanelLevel panicLevel = (PanicLevel) arg0.getArguments()[0]; return premiums.get(panicLevel); } });
仅供参考:anyString()
可能只是Matchers.anyString()
.