java-如何用arg’T值’模拟方法?

我有这样的方法:

<T extends Entity> boolean putObject(T value);

但是,无法找出如何使用模仿来模拟它吗? anyObject()和any()产生错误:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
1 matchers expected, 3 recorded.

嘲笑:

when(service.putObject(any(ProcessingTransaction.class))).thenReturn(true);

它如何工作?

解决方法:

您很可能在测试的较早位置(甚至在先前的测试中)对Mockito方法进行了一两个错误的格式调用.当您调用一个使参数匹配器(如any())的Mockito方法时,该匹配器将被添加到内部数据结构中.然后在实际使用时将其删除.

Mockito找到了三个参数匹配器而不是一个,这一事实表明您创建了一些参数匹配器,但没有使用它们.例如,如果在不使用thenReturn()的情况下使用when(…),则可能会发生这种情况.但是还有很多其他情况.

如果您需要帮助以查找确切的错误信息,则需要发布更多的测试代码.

上一篇:Maven测试项目中,如何根据不同的JUnit版本,配置pom.xml文件以使用PowerMock的Mockito扩展


下一篇:Spring:无法将模拟注入到带有@Aspect注释的类中