為了在單元測試中指定DateTime.Now的值,我采用Microsoft Fakes技術的Shim。
主要參考了園里的http://www.cnblogs.com/FreeDong/p/3353111.html,編譯時出了幾千個警告,最終在“引用”中沒有出現System.4.0.0.0.Fakes,當然了,這種情況下寫using System.Fakes也編譯出錯。我的環境是VS2013 update4。中間經歷了各種折騰,直到用VS2012 update2試了,奇跡地成功了。
最后打了VS2013 update5補丁,終於解決了這個問題。這個補丁的iso形式6G多。
打通了單元測試里如何指定DateTime.Now的問題,又向好用的單元測試邁了一大步。
Fakes的Shim技術非常不錯,至今我也想不通是什么原理實現的,除非是.NET虛擬機專門提供的后門?知道的朋友請指點指點,萬分感謝。