org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效

问题描述 投票:0回答:2

我的测试类中有多个模拟语句,一切正常。我正在为 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!

我使用了参数匹配器而不是原始值,所以我没有混合任何东西。这可能是什么原因?

java spring mocking mockito matcher
2个回答
5
投票

您在调用 when 或 verify 之外调用了参数匹配器,这是非法的。

参见参数匹配器

any()
eq()
等匹配器方法不会返回匹配器。在内部,它们在堆栈上记录一个匹配器并返回一个虚拟值(通常为空)。此实现是由于 java 编译器强加的静态类型安全。结果是您不能在已验证/存根方法之外使用
any()
eq()
方法。

另请参阅 Mockito 匹配器如何工作?


0
投票

我刚刚在要比较的实际字符串周围添加了 eq() 并且它起作用了!不过,消息堆栈跟踪将向您显示此提示。

© www.soinside.com 2019 - 2024. All rights reserved.