为了在单元测试中指定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虚拟机专门提供的后门?知道的朋友请指点指点,万分感谢。