当我们进行开发/质量检查时,我们经常需要假装当前日期/时间不是现在。我们有某种依赖于日期的逻辑是很常见的。
简单示例:假设商店中的产品在 2010 年 12 月 15 日至 2011 年 1 月 3 日之间有售。这两个日期将存储在 DB 中,代码会将其与 DateTime.Now
进行比较。这显然需要以某种方式进行[单元]测试。问题是如何?
到目前为止,我们只是添加了一个自定义 Date
对象,并尝试使用 Date.Now
而不是 DateTime.Now
来强制执行,这不包括任何可能依赖当前日期的第三方代码,而且感觉非常蹩脚。
我想知道在不更改 Windows 中的系统日期的情况下,是否有更犹太的处理日期覆盖的方法。
最佳答案
对于单元测试,我建议您查看 Microsoft Moles ,这是一个隔离框架,可让您用自己的委托(delegate)替换对 DateTime.Now
的调用,该委托(delegate)可以返回您想要的任何日期。
关于.net - 覆盖 DateTime.Now,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4594876/