Java Mockito为参数数目可变的方法调用when时使用参数匹配器
我试图在对参数数量可变的方法(Java中的Java Mockito为参数数目可变的方法调用when时使用参数匹配器,java,mockito,Java,Mockito,我试图在对参数数量可变的方法(Java中的…东西)的when调用中使用参数匹配器,但没有成功。下面是我的代码,我还将列出我尝试使用的所有代码行 import static org.mockito.Mockito.*; public class MethodTest { public String tripleDot(String... args) { String sum = ""; for (String i : args) {
…
东西)的when调用中使用参数匹配器,但没有成功。下面是我的代码,我还将列出我尝试使用的所有代码行
import static org.mockito.Mockito.*;
public class MethodTest {
public String tripleDot(String... args) {
String sum = "";
for (String i : args) {
sum += i;
}
System.out.println(sum);
return sum;
}
public static void main(String[] args) {
try{
MethodTest mt = mock(MethodTest.class);
when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!");
System.out.println(mt.tripleDot(new String[]{"1","2"}));
}
catch (Exception e) {
System.out.println(e.getClass().toString() + ": " + e.getMessage());
}
}
}
如果打印语句为:
System.out.println(mt.tripleDot(new String[]{"1"}));
System.out.println(mt.tripleDot(new String[]{"1","2"}));
或
它将打印“Hello world”
但如果打印语句是:
System.out.println(mt.tripleDot(new String[]{"1"}));
System.out.println(mt.tripleDot(new String[]{"1","2"}));
或
它将打印“空”
我也尝试过在when调用中做一些变化,例如
anyObject()
或anyString()
,但没有效果。我不确定Mockito是否能够在包含可变数量参数的方法调用中使用参数匹配器。有可能吗?如果是这样的话,我应该怎么做才能让这一切顺利进行呢?试试matcher。这是在1.8.1中引入的。尝试Mockito.anyVararg()
。应该行。我现在觉得很尴尬。谢谢你指出这一点。@Andrew,别担心,这发生在我们所有人身上。这就是我们学习的方式DI需要额外的一分钟来找到正确的语法:Matchers。anyVararg()
链接已失效。似乎已@弃用