如何使用arg'T值'模拟方法?

时间:2012-08-20 09:05:42

标签: java mocking mockito

我有这样的方法:

<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);

它是如何工作的?

1 个答案:

答案 0 :(得分:3)

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

Mockito发现三个参数匹配器而不是一个参数匹配器的事实表明你做了一些争论匹配但没有使用它们。例如,如果您使用when(...)而不使用thenReturn(),则可能会发生这种情况;但是还有很多其他案例。

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