2011-11-02 56 views
0
  1. 是否可以使用構造函數參數創建模擬對象。例如 說我有一個對象,並使用兩種構造函數。怎麼樣 ?模擬對象查詢

    Class test{ 
    List<String> list 
    public test() 
    { 
        list = new ArrayList<String>() 
    } 
    
    public test(List<String> list) 
    { 
        this.list = list 
    } 
    } 
    

問題2: 我可以使用一個真正的對象上預計,如果其中的一個方法返回一個模擬對象 對於如PreferenceService prefServ = easyMock.create(...)現在prefServ是一個模擬由'Test'類中的方法之一返回的對象PreferenceService getPreferenceService()。如果我創建一個類型爲Test的真實對象,我可以使用expect(test.getPreferenceService())和Return(mockPreferenceService)?我收到一個錯誤,說不兼容的返回類型。

回答

0

我想你想要的是部分嘲弄。你可以這樣做:

PreferenceService prefServ = createMock(PreferenceService.class); 
Test defaultTest = createMockBuilder(Test.class).addMockMethod("getPreferenceService"). 
    createMock(); 
expect(defaultTest.getPreferenceService()).andReturn(prefServ); 

現在你有defaultTest,使用默認的構造函數實例,這是測試的不同之處在於方法getPreferenceService()被嘲笑一個真正的實例。

List<String> testList = new ArrayList<String>(); 
Test otherConstructorTest = createMockBuilder(Test.class). 
    addMockMethod("getPreferenceService").withConstructor(testList); 
expect(defaultTest.getPreferenceService()).andReturn(prefServ); 

現在你有上面一樣,但這次測試的對象是用列表構造構成。