3

我有这样的方法:

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

但是找不到如何使用 mockito 来模拟它?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);

它是如何工作的?

4

1 回答 1

3

最有可能的是,在您的测试早期(甚至在之前的测试中)的某个地方,您对 Mockito 方法有一个或两个格式不正确的调用。当您调用生成参数匹配器(如 )的 Mockito 方法时,any()匹配器将被添加到内部数据结构中。然后在实际使用时将其删除。

Mockito 找到了三个参数匹配器而不是一个,这一事实表明您制作了一些参数匹配器但没有使用它们。例如,如果您使用when(...)without thenReturn(),则可能会发生这种情况;但也有很多其他情况。

如果您需要帮助找出您做错了什么,您需要发布更多测试代码。

于 2012-08-20T09:38:58.930 回答