抽象DateTime.Current依赖
是否有Nuget软件包或其他“标准”包装了当您的代码与DateTime.Now
耦合时创建的硬性依赖关系?
在写我自己的作品之前,我正在寻求指导。 尽管这样做很微不足道,但我宁愿使用一些存在的东西,如果它已经成为一种标准。
我非常怀疑有任何nuget包对于任何非常微不足道的东西 - 一个接口和两个实现(“系统”时钟和一个假的测试)。
如果你自己做这些,我会强烈考虑让时钟返回一个DateTimeOffset
而不是DateTime
,或者至少让它换行DateTime.UtcNow
... DateTime.Now
是一个等待发生的问题...
不过,野田时间包含了所有这些。 你可能因为这个原因不想要整个野田时间,请记住你......
(有一个Noda Time nuget包,但它肯定是预发行版本,我需要在某个时候将其更新到0.2版本,但它仍然不在v1级别,尽管如此......)
如果您想要一种表达依赖关系的非常便宜而又快捷的方式,则无论您通常表达依赖关系,都可以使用Func<DateTime>
或Func<DateTimeOffset>
。 界面方法虽然更清洁:)
我不知道这样做的任何nuget包。 当我遇到这个问题时,我简单地创建了我自己的类型:
public static class SystemTime
{
public static Func<DateTime> Now = () => DateTime.Now;
}
这样在你的单元测试中,你可以轻松地改变Now的功能来返回你想要的任何DateTime。
假设我们有一个方法:
public void Foo() {
var now = DateTime.UtcNow;
Record(now);
我需要的解决方案就是我需要的任何时间DateTime.Now
是:
public void Foo(DateTime? now = null) {
Record(now.GetValueOrDefault(DateTime.UtcNow));
链接地址: http://www.djcxy.com/p/55759.html