2014-02-10 29 views
4

我想模擬GregorianCalendar.getTime()應該是Date()的返回值。 但我得到這個錯誤Mockito GregorianCalendate.getTime()導致錯誤

org.mockito.exceptions.misusing.WrongTypeOfReturnValue: 
Date$$EnhancerByMockitoWithCGLIB$$91e3d4b7 cannot be returned by getTimeInMillis() 
getTimeInMillis() should return long 

Mockito.when(gregorianCalendar.getTime()).thenReturn(date); 

雙方的GregorianCalendar和日期嘲笑的對象。

有關如何解決此問題的任何建議? 所有幫助非常感謝

回答

4

就以實現getTime()位於超類的GregorianCalendar名爲Calendar一看:

public final Date getTime() { 
    return new Date(getTimeInMillis()); 
} 

這意味着你應該嘗試嘲笑getTimeInMillis()代替:

Mockito.when(gregorianCalendar.getTimeInMillis()).thenReturn(date.getTime());

0

A GregorianCalendar是一個值對象。關於嘲諷價值對象的最佳建議永遠不會這樣做。只需創建一個真實的GregorianCalendar以及您想要使用的日期。