我的测试类中有多个mock语句,并且一切都运行良好。我正在为一个DAO mock添加一个新语句,如下所示:
Mockito.when(myDAO.saveOrUpdate(Mockito.any())).thenReturn(Mockito.any());
But I get exception as :
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!
我使用了参数匹配器而不是原始值,所以我没有混合任何东西。这是什么原因呢?
1条答案
按热度按时间piv4azn71#
您在对when或verify的调用之外调用了参数匹配器,这是非法的。
请参阅参数匹配器:
匹配器方法如
any()
,eq()
不返回匹配器。在内部,它们在堆栈上记录一个匹配器并返回一个伪值(通常为空)。这种实现是由于java编译器强加的静态类型安全。结果是,您不能在verified/stubed方法之外使用any()
,eq()
方法。另请参阅How do Mockito matchers work?