我的测试类中有多个模拟语句,一切正常。我正在为 DAO 模拟添加一条新语句:
Mockito.when(myDAO.saveOrUpdate(Mockito.any())).thenReturn(Mockito.any());
But I get exception as :
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!
我使用了参数匹配器而不是原始值,所以我没有混合任何东西。这可能是什么原因?
您在调用 when 或 verify 之外调用了参数匹配器,这是非法的。
参见参数匹配器:
、any()
等匹配器方法不会返回匹配器。在内部,它们在堆栈上记录一个匹配器并返回一个虚拟值(通常为空)。此实现是由于 java 编译器强加的静态类型安全。结果是您不能在已验证/存根方法之外使用eq()
、any()
方法。eq()
另请参阅 Mockito 匹配器如何工作?
我刚刚在要比较的实际字符串周围添加了 eq() 并且它起作用了!不过,消息堆栈跟踪将向您显示此提示。