有一條規則說你應該如何模擬你在Objective C/Cocoa中沒有的類? (例如NSDate)
只有您擁有的模擬對象。
我想我理解這個原因 - 框架提供的模擬類可能會導致奇怪的行爲。
有什麼選擇?
當你需要使用NSDate的虛擬日期時呢?
在過去,我將日期方法從NSDate調到我自己的類--NSDateMock - 但有些事情告訴我這是錯誤的!
One Solution - Wrapper?
創建一個NSDate的包裝,但你必須實現所有的方法。
或者你會實施你正在使用的?這似乎是一個混亂的做法。
我的問題
什麼是你不擁有如NSDate的嘲諷類的好辦法嗎?
更新1
我發現this article on mocking這似乎意味着,寫一個瘦包裝是要走的路。我不太清楚爲什麼,但我覺得這是一個黑客。再次,它可以使代碼更具表現力。
但是這引發了問題,在NSDate的情況下,你是否需要將包裝類注入每個需要知道日期的類?當然不是......
更新2
已經有關於這個問題的一些很好的答案,但我仍然堅持尋找其他的答案 - 必須有這樣的明確的方式,肯定?我仍然沒有看到類別如何給我一個我可以控制的虛擬對象。
只是好奇 - 爲什麼你想創建模擬日期?如果不瞭解你的設置,我的第一個想法是想知道爲什麼你需要首先嘲笑經過充分測試的系統課程。 – 2012-02-18 22:05:44
@Tim如果一個應用程序正在處理時間敏感的操作,我可能想要模擬發生的事情,比如接近午夜。我將如何實現這一目標? – 2012-02-19 00:47:55