Javavalidationvoid方法与Mockito调用n次

我正在尝试validation一个(void)方法在一个DAO中被调用 – 我正在使用一个提交点发送一个结果列表,重置列表并继续。 假设我在列表中有4件事,并且我有一个提交点为1,我期望“发送”方法被调用4次。 我可以通过编写来validation该方法被调用一次

Mockito.verify(mock).send()

它通过..但我想validation次数被称为。 我会这样想的

Mockito.verify(mock.send(), times(4))

将是足够的,但它说,参数是不正确的validation。

顺便说一句,如果我将Mockito.verify(mock).send()更改为Mockito.verify(mock.send())Mockito.verify((mock).send())我得到相同的错误。 对此有何想法?

必要的方法是Mockito#validation :

 public static <T> T verify(T mock, VerificationMode mode) 

mock是你的嘲弄的对象, mode是描述如何validation模拟的VerifactionMode 。 可能的模式是 :

 verify(mock, times(5)).someMethod("was called five times"); verify(mock, never()).someMethod("was never called"); verify(mock, atLeastOnce()).someMethod("was called at least once"); verify(mock, atLeast(2)).someMethod("was called at least twice"); verify(mock, atMost(3)).someMethod("was called at most 3 times"); verify(mock, atLeast(0)).someMethod("was called any number of times"); // useful with captors verify(mock, only()).someMethod("no other method has been called on the mock"); 

您将需要从Mockito类的这些静态导入,以便使用verify方法和这些validation模式:

 import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atMost; import static org.mockito.Mockito.never; import static org.mockito.Mockito.only; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; 

(类VerificationModeFactory也提供了所提到的validation模式,所以你也可以使用这个类来进行静态导入。)

所以在你的情况下,正确的语法是:

 Mockito.verify(mock, times(4)).send() 

这validation了send方法在模拟对象上被调用了4次。 如果被称为less于或超过4次,它将失败。


如果你只是想检查,如果该方法已被调用一次,那么你不需要通过VerificationMode 。 一个简单的

 verify(mock).someMethod("was called once"); 

就足够了。 它在内部使用verify(mock, times(1)).someMethod("was called once");