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

简单示例:假设商店中的产品在 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/

10-15 17:15