gpt4 book ai didi

java - 验证是否使用 mockito 调用了三种方法之一

转载 作者:搜寻专家 更新时间:2023-10-30 21:29:33 24 4
gpt4 key购买 nike

我有如下三种方法:

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)”

我有两个问题:

  1. 我该如何解决这个问题?
  2. 有什么方法可以检查是否调用了两个方法中的任何一个?想象一下,我有另一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com