我想模拟使用不同参数调用两次的方法的结果。
我使用了这段代码
Mockito.when(rt.exchange(Mockito.anyString(), Mockito.any(HttpMethod.class), Mockito.<HttpEntity<?>> any(), Mockito.<Class<String>> any())).thenReturn(response);
Mockito.when(rt.exchange(Mockito.anyString(), Mockito.any(HttpMethod.class), Mockito.<HttpEntity<?>>any(), Matchers.<Class<InfsEspecificasDTO>> any())).thenReturn(responseInfoEsp);
但是,当我启动测试时,第一个模拟始终是执行的。
如何解决这个困惑。我尝试将第二个模拟中的第四个参数指定为 InfsEspecificasDTO.class
但我得到了
InvalidUseOfMatchersException
如何解决这个困惑?
最佳答案
尝试使用 doAnswer
解决方案。前三个参数并不重要,您只需检查最后一个参数的实例:
when(rt.exchange(anyString(), any(HttpMethod.class), any(), any()))
.thenAnswer((invocation) -> {
Object paramToCheck = invocation.getArguments()[3];
if(paramToCheck instanceof String){
return response;
}else if (paramToCheck instanceof InfsEspecificasDTO){
return responseInfoEsp;
}
return null;
});
关于java - 如何解决使用Mockito.any()时的困惑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55394545/