我试图在调用具有可变数量参数的方法(Java中的...
事件)时没有成功时使用参数匹配器。我的代码在下面,我还会列出我尝试使用的所有行。Mockito使用参数匹配器来调用具有可变数量参数的方法
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("1"));
这将打印的 “Hello world”。
但是,如果打印的说法是:
System.out.println(mt.tripleDot(new String[]{"1","2"}));
或
System.out.println(mt.tripleDot("1","2"));
这将打印 “空”。
我也试过在做什么变化的时候打电话,比如anyObject()
或anyString()
但无济于事。我不确定Mockito是否可以使用参数匹配器来处理包含可变数量参数的方法调用。它甚至有可能吗?如果是这样,我该怎么做才能做到这一点?
我现在感到很尴尬。感谢您指出了这一点。 – Andrew 2012-04-18 17:08:31
@安德鲁,别担心,它发生在我们所有人身上。这就是我们学习的方式。 :D – user1329572 2012-04-18 17:09:06
我需要一分钟才能找到正确的语法:'Matchers。 anyVararg()' –
jan
2013-08-13 17:27:15