我试图在一个方法的when调用中使用参数匹配器,该方法具有可变数量的参数(Java语言中的... ),但没有成功。我的代码如下,我还将列出我尝试使用的所有行。
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“。
但是如果print语句是:
System.out.println(mt.tripleDot(new String[]{"1","2"}));或
System.out.println(mt.tripleDot("1","2"));它将打印"null“。
我还尝试在when调用中做一些变化,比如anyObject()或anyString(),但都无济于事。我不确定Mockito是否可以使用参数匹配器来处理包含可变数量参数的方法调用。这有可能吗?如果是这样的话,我应该怎么做才能让它正常工作呢?
发布于 2012-04-19 01:06:54
试试anyVararg()匹配器。这是在1.8.1中引入的。
发布于 2012-04-19 01:10:04
试试Mockito.anyVararg()。应该能行得通。
https://stackoverflow.com/questions/10214311
复制相似问题