2016-11-14 53 views
0

我需要重新實現一個模擬方法EasyMock。該方法被定義爲返回一個原始值。重新實現返回原始類型的方法

對於模擬的重新實施方法,EasyMock的用戶指南建議是這樣的:

expect(l.remove(10)).andAnswer(new IAnswer<String>() { 
    public String answer() throws Throwable { 
     return getCurrentArguments()[0].toString(); 
    } 
    }); 

這種方法並不適用於我,因爲我需要使用原始的返回類型

在指南中,還有另一種方式andDelegateTo。我需要使用andAnswer的辦法,而不是andDelegateTo,因爲:

  • 我嘲笑的一類,而不是一個接口
  • 當使用andDelegateTo,我要創建匿名類嘲笑式的,這將調用一個其構造函數,這不適合我的情況。
+1

嘗試使用包裝類型:整數 - >整數,布爾值 - >布爾等 –

+1

'andAnswer'和'andDelegateTo'是等同的。後者允許輸入解決方案。如果你想窺視一堂課,可能很有用。 – Henri

+0

@Henri andAnswer和andDelegateTo在使用上並不相同:http://stackoverflow.com/questions/40640742/easymock-andanswer-vs-anddelegateto任何意見將會有用 – joro

回答

2

使用包裝類基本類型的,例如:

List listMock = EasyMock.createMock(List.class); 

EasyMock.expect(listMock.isEmpty()).andAnswer(new IAnswer<Boolean>() { 

    @Override 
    public Boolean answer() throws Throwable { 
     return true; 
    } 
}); 
+1

這是正確的答案。所有原始類型都可以用'IAnswer'包裝 – Henri