嘲笑價值對象很少是一個好主意。你應該嘲笑行爲,而不是數據。我想你真正想要實現的是能夠在測試中使用任意日期(這是一個好主意)。
我在這種情況下,成功地利用該模式是fake system clock(從該網站的例子):
public interface TimeSource {
long currentTimeMillis();
}
而且兩種實現方式,真正:
public final class RealSource implements TimeSource {
public long currentTimeMillis() {
return System.currentTimeMillis();
}
}
和假來進行測試:
public final class FakeSource implements TimeSource {
public long currentTimeMillis() {
return //...whatever you want
}
}
我發現在輔助方法中使currentTimeMillis()
靜態化很方便od並使用static
字段指向當前TimeSource
。
最後,更簡單的方法是通過直接日期:
class Lekcja {
Calendar _date;
public Lekcja(Calendar date) {
this._date = date;
}
//...
}
也
從技術上講,你可以用PowerMock做這種嘲笑,但你真的應該和Tomasz一起回答。 –
請勿測試此課程。它沒有任何邏輯,所以不存在邏輯錯誤的可能性,因此對其進行測試沒有任何好處。認真對待不同的事情花時間。 –