我有这样的三种方法:
public void method1(String str){
...
}
public void method1(String str, String str2, String str3){
...
}
public void method1(String str, String str2, Object[] objs, String str3){
...
}
我想检查 Mockito 是否调用了这些方法中的任何一个,因此我尝试使用 anyVararg Matcher:
verify(foo).method1(anyVararg());
但这不会编译“错误类型中的方法 method1(String, String) 不适用于参数(对象)”
我有两个问题:
- 我该如何解决这个问题?
- 有没有办法检查是否调用了两个方法中的任何一个?想象一下我有另一种方法,称为方法 2 和方法 3。我想检查是否调用了其中任何一个(但至少有一个)。
Thanks.
您可以通过使用来做到这一点Answer
如果调用任何方法,则增加计数器。
private Answer incrementCounter = new Answer() {
public Object answer(InvocationOnMock invocation) throws Throwable {
counter++;
return null;
}
};
请注意,您需要存根所有方法。方法的唯一性基于其签名,而不仅仅是方法名称。两个同名的方法仍然是两个不同的方法。
doAnswer(incrementCounter).when(mockObj.method1(anyString()));
doAnswer(incrementCounter).when(mockObj.method1(anyString(), anyString()));
doAnswer(incrementCounter).when(mockObj.method2(anyString()));
请参阅文档doAnswer
here http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html#12.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)