我試圖在調用具有可變數量參數的方法(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