当代码根据当前日期处理日期时,测试应涵盖边缘情况,例如闰年以及更频繁的月份和年份边界.
在我们的代码中,我们总是在我们的类中深入了解当前日期DateTime.Now(在我们的例子中是.NET).
你怎么能对这些代码进行单元测试?
这是依赖注入变得非常有用的地方吗?
这是暂时的,但显然下一个版本的Typemock将允许伪造 DateTime.Now
https://blog.typemock.com/2009/05/mockingfaking-datetimenow-in-unit-tests.html
language-agnostic datetime unit-testing dependency-injection
我想为应用程序创建测试数据,并且有很多time_at属性被跟踪,太多而无法以可维护的方式覆盖.我在想的是,我可以在Ruby中更改基准参考时间变量吗?
这将使得它如此created_at,updated_at,last_login_at,等,可以设置为人工时间,所以我可以在测试中做到这一点:
Date.today #=> Thu, 30 Dec 2010
Time.system_time_offset = 1.week.ago # made up
Date.today #=> Thu, 23 Dec 2010
Time.now #=> Thu Dec 23 14:08:38 -0600 2010
user_1 = User.create!
user_1.created_at #=> Thu Dec 23 14:08:38 -0600 2010
Time.reset_system_time # made up
user_2 = User.create!
user_1.created_at #=> Thu Dec 30 14:08:38 -0600 2010
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?