当我们进行开发/质量检查时,我们经常需要假装当前日期/时间不是现在。我们常常有某种依赖日期的逻辑。
简单示例:假设商店中的商品在2010年12月15日到2011年1月3日之间可用。这两个日期将存储在数据库中,代码会将其与DateTime.Now
进行比较。这显然需要以某种方式进行[单元]测试。问题是怎么样的?
到目前为止,我们刚刚添加了一个自定义Date
对象,并尝试使用Date.Now
而不是DateTime.Now
强制执行,该版本不包含任何可能依赖当前日期的第三方代码,并且也觉得超级跛脚。
我想知道是否有更多犹太方式处理日期覆盖而不改变Windows中的系统日期。
答案 0 :(得分:12)
对于单元测试,我建议你看看Microsoft Moles,这是一个隔离框架,可让你用你自己的代表替换对DateTime.Now
的调用,这可以返回你想要的任何日期。 / p>
答案 1 :(得分:-1)
在纯.net中无法使用Win32SetSystemTime
function using pinvoke