覆盖DateTime.Now

时间:2011-01-04 14:50:45

标签: .net time

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

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

到目前为止,我们刚刚添加了一个自定义Date对象,并尝试使用Date.Now而不是DateTime.Now强制执行,该版本不包含任何可能依赖当前日期的第三方代码,并且也觉得超级跛脚。

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:-1)