我有如下三种方法:
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) 不适用于参数 (Object)”
我有两个问题:
- 我该如何解决这个问题?
- 有什么方法可以检查是否调用了两个方法中的任何一个?想象一下,我有另一个 methods 称为 method2 和 method3。我想检查是否调用了其中任何一个(但至少调用了一个)。
谢谢。
最佳答案
您可以通过使用 Answer
在调用任何方法时递增计数器来完成此操作。
private Answer incrementCounter = new Answer() {
public Object answer(InvocationOnMock invocation) throws Throwable {
counter++;
return null;
}
};
请注意,您需要 stub 所有方法。方法的唯一性基于其签名,而不仅仅是方法名称。两个同名的方法仍然是两个不同的方法。
doAnswer(incrementCounter).when(mockObj.method1(anyString()));
doAnswer(incrementCounter).when(mockObj.method1(anyString(), anyString()));
doAnswer(incrementCounter).when(mockObj.method2(anyString()));
参见doAnswer
的文档here .
关于java - 验证是否使用 mockito 调用了三种方法之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594645/