2014-11-23 54 views
0

我想模擬下面提到的方法。嘲笑參數爲LIST類型的方法

public class MockClass { 
    public boolean ToBeMocked(Cinput, Coutput, List<CIOChain<Cinput, Coutput>>) 
} 

什麼應該代替?在下面提到的代碼?

Easymock.expect(MockClassObject.ToBeMocked(Cinput.class, Coutput.class, ??)).andReturn(true); 
+0

我試過了01 Easymock.expect(MockClassObject.ToBeMocked(Cinput.class,Coutput.class,List.class))。andReturn(true); Easymock.expect(MockClassObject.ToBeMocked(Cinput.class,Coutput.class,List >))。andReturn(true); 他們沒有爲我工作。 – 2014-11-23 07:45:28

回答

0

Class級別,所有List接口是相同的,無論這種類型的,由於類型擦除;它們在編譯時只有不同。

所以它只是List.class而不是??

也就是說,

Easymock.expect(MockClassObject.ToBeMocked(Cinput.class, Coutput.class, List.class)). 
    andReturn(true); 

在嘲諷的範圍,你真的應該指定您希望傳遞給方法的對象,如:

Easymock.expect(MockClassObject.ToBeMocked(cInputObj, cOutputObj, listObj)). 
    andReturn(true); 

如果由於某種原因你不能這樣做,你可以使用isA/anyObject變種:

Easymock.expect(MockClassObject.ToBeMocked(isA(Cinput.class), isA(Coutput.class), isA(List.class))). 
    andReturn(true); 
+0

我試過了。它不適合我。後來我嘗試了類型化它。 '(List >)easymock.anyobject();' – 2014-11-23 19:58:18

+0

總計忘了這是在嘲笑的範圍!如果由於某種原因你不能指望用真實/模擬對象調用方法,你應該使用'isA'變體。 – mystarrocks 2014-11-23 20:07:41

+0

順便說一下,「它沒有工作」是什麼意思?它是否因錯誤的期望而失敗?嘲笑沒有發生? – mystarrocks 2014-11-23 20:15:10