验证是否使用mockito调用了三个方法之一

2024-05-17

我有这样的三种方法:

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) 不适用于参数(对象)”

我有两个问题:

  1. 我该如何解决这个问题?
  2. 有没有办法检查是否调用了两个方法中的任何一个?想象一下我有另一种方法,称为方法 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(使用前将#替换为@)

验证是否使用mockito调用了三个方法之一 的相关文章

随机推荐