覆盖DateTime.Now

Ili*_*a G 3 .net time

当我们进行开发/ QA时,我们经常需要假装当前的日期/时间不是现在.我们常常有某种依赖日期的逻辑.

简单的例子:假设商店中的产品在2010年12月15日至2011年1月3日期间可用.这两个日期将存储在DB中,代码将与之进行比较DateTime.Now.这显然需要以某种方式进行[单元]测试.问题是怎么样的?

到目前为止,我们刚刚添加了一个自定义Date对象并试图强制使用Date.Now而不是DateTime.Now,它不包括任何可能依赖于当前日期的第三方代码,并且也感觉超级蹩脚.

我想知道是否有更多犹太方式处理日期覆盖而不改变Windows中的系统日期.

Joã*_*elo 12

对于单元测试,我建议你看看Microsoft Moles,这是一个隔离框架,可以让你DateTime.Now用你自己的代表替换一个可以返回你想要的任何日期的代表.