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