【发布时间】:2022-02-11 18:39:41
【问题描述】:
我一直在观看 Jason Taylor 关于使用 ASP.NET Core 进行清洁架构的演讲(时间 35:52)
https://www.youtube.com/watch?v=dK4Yb6-LxAk&t=2134s&ab_channel=GOTOConferences
他创建了一个DateTimeService,它返回DateTime.Now并通过AddTransient方法注册,他建议使用它而不是直接使用DateTime.Now,因为在这种情况下他不依赖机器时钟。
我不清楚为什么他在这种情况下没有依赖关系,你能解释一下它是如何工作的吗?
【问题讨论】:
-
无需费心观看:可能是为了让您可以将替代实现注入到单元测试中,让您可以控制从
Now返回的值。 -
尝试为此函数编写测试:
return DateTime.Now.AddDays(amountOfDays); -
在你的代码中测试时间行为,例如测试周期性事件或超时,如果没有办法改变你的代码所看到的时间,将会非常困难。使用
DateTime.Now无法将时间快进例如 60 秒来检查超时是否有效
标签: c# .net asp.net-core datetime .net-core