2013-10-31 83 views
0

我有這樣一段代碼:jmockit期望NPE

new Expectations(){ 
    { 

    mFubar.getModel(); 
    result = new Model(); 
    times = 1; 

    mFubar.getModel().getAllDogs(); 
    result = new HashSet<Dogs>(); 
    times = 1; 
    } 
}; 

不幸的是,我總是得到一個空值mFubar.getModel()
如何爲getModel()創建模擬值,以便mFubar.getModel().getAllDogs();正常工作?

回答

0

你得到一個NPE,因爲第二次調用mFubar.getModel(),就像第一次一樣,返回null內部一個期望記錄塊不能使用記錄結果;這些值只能從被測代碼中獲得。

此外,它看起來並不像Model類在這裏被嘲笑,所以試圖記錄getAllDogs()的呼叫也不起作用。爲此,您需要聲明@Mocked Model model模擬字段或模擬參數。

最後,具有集合(List,Set,Map等)作爲其返回類型的mocked方法的默認返回值已經是一個空集合。所以,寫作result = new HashSet<Dog>();無論如何都是多餘的。