2011-01-13 124 views
1

我正在使用EasyMocks。
在一個方法裏面有一個新的對象被創建。並在該對象上調用返回地圖的方法。如下所示模擬一個新的對象創建

test(){ 
    Fun f= new Fun(); 
    Map m =f.getaMap(); 
} 

我想在當時返回一個自定義的Map。我該怎麼做。
謝謝。

+0

嘗試mockito ... :) – 2011-01-13 11:35:10

回答

2

我從你的代碼猜測你已經給我們一個測試方法,在這個方法中你測試Fun並查看Fun產生的Map

依賴注入MapFactory它創建MapFun。我不確定EasyMock的語法,所以mockMapFactory這裏是嘲笑的對象,它將有一個方法來爲你創建一個地圖。模擬該方法來生成地圖,然後調用你的類中的方法而不是使用new

test() { 

    Fun f= new Fun(mockMapFactory); 
    Map m =f.getaMap(); 
} 

看看工廠設計模式,它是讓你避免調用new,這樣就可以模擬對象的創建(和對象本身,如果需要)的一個真正好方法。這也意味着你的班級不再負責決定它創建什麼樣的對象。

當您測試工廠時,您將無法在其工廠內創建地圖。沒關係。要麼通過檢查來檢驗,要麼只是檢查你是否得到了正確的對象。