我试图验证在DAO中调用(void)方法 - 我使用提交点发送结果列表直到该点,重置列表并继续。 假设我在列表中有4个东西,我的提交点为1,我希望"发送"方法被调用4次。 我可以通过编写
来验证该方法是否被调用一次 Mockito.verify(mock).send()
它通过..但我想验证它被调用的次数。我想是
Mockito.verify(mock.send(), times(4))
就足够了,但它说参数不正确验证。
顺便说一下,如果我将Mockito.verify(mock).send()
更改为Mockito.verify(mock.send())
或Mockito.verify((mock).send())
,我会收到同样的错误。对此的想法?
答案 0 :(得分:188)
必要的方法是Mockito#verify:
public static <T> T verify(T mock,
VerificationMode mode)
mock
是您的模拟对象,mode
是VerificationMode
,用于描述如何验证模拟。 Possible modes are:
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
方法和这些验证模式:
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;
因此,在您的情况下,正确的语法将是:
Mockito.verify(mock, times(4)).send()
这会验证方法send
在模拟对象上被称为 4 次。如果被调用的次数少于或少于4次,则会失败。
如果您只是想检查一下,如果方法被调用一次,那么您就不需要传递VerificationMode
。一个简单的
verify(mock).someMethod("was called once");
就足够了。它内部使用verify(mock, times(1)).someMethod("was called once");
。
可以在同一个模拟器上进行多次验证调用,以实现&#34;之间的#34;验证。 Mockito不支持像verify(mock, between(4,6)).someMethod("was called between 4 and 6 times");
这样的东西,但我们可以写
verify(mock, atLeast(4)).someMethod("was called at least four times ...");
verify(mock, atMost(6)).someMethod("... and not more than six times");
相反,要获得相同的行为。边界是包含,因此当方法被调用4,5或6次时,测试用例为绿色。