我试图验证一个(void)方法是否在DAO内部被调用--我正在使用一个提交点,该点发送到该点的结果列表,重置该列表并继续。假设我在列表中有4件事情,并且我有一个提交点1,我希望“send”方法被调用4次。我可以通过编写
mockito.verify(mock).send()
它通过了..但我想验证它被调用的次数。我会认为
mockito.verify(mock.send(),times(4))
就足够了,但它说参数对验证不正确。
顺便提一下,如果我将mockito.verify(mock).send()
更改为mockito.verify(mock.send())
或mockito.verify((mock).send())
,我会得到相同的错误。对此有什么想法?
必要的方法是mockito#verify:
public static <T> T verify(T mock,
VerificationMode mode)
mock
是模拟对象,mode
是verificationmode
,它描述如何验证模拟。可能的模式有:
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”);
。
在同一个模拟上有多个验证调用以实现“介于”之间的验证是可能的。Mockito不支持类似verify(mock,between(4,6)).someMethod(“was calling 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次时,测试用例是绿色的。
我有一个类,它有两个方法。我想模拟这个类,然后模拟第一个方法,但不是第二个。 例如。 单元测试代码: 奇怪的是m2没有被调用。 我错过什么了吗?
问题内容: 我有四个让我们说A,B,C,D的类,每个类都从另一个调用方法。 现在我已经模拟了类A,并且想模拟使用嘲笑的方法 并希望在递归方法调用上获取“ foo” 应该回来 我试过了 when(a.getB()。getC()。getD())。thenReturn(“ foo”); 但是得到了nullPointerException 然后我尝试 doReturn(“ foo”)。when(a.get
我有4个类让说A,B,C,D,每一个调用的方法从另一个。 现在我已经模拟了类A,并想使用mockito模拟一个方法 但得到nullPointerException 然后我试着 doReturn(“foo”).When(A.getb().getc().getd()); 但我不能一次就做到吗?如有任何帮助,我们将不胜感激。
当我从测试类调用functions方法时,我希望executeSol方法不要运行,因为它会导致错误。
异常堆栈跟踪
请有人帮助我在上面,也提供我的解决上述问题。