相关疑难解决方法(0)

如何假冒Time.now?

Time.now在单元测试中设置测试时间敏感方法的最佳方法是什么?

ruby time unit-testing

70
推荐指数
6
解决办法
2万
查看次数

获取当前时间的单元测试代码

为当前时间的代码编写单元测试的最佳方法是什么?例如,某些对象可能仅在工作日创建,其他对象在检查执行某些操作的权限时会考虑当前时间等.

我想我应该嘲笑Date.today和Time.now.这是正确的方法吗?

更新:两种解决方案(a)Time.is和(b)Time.stubs(:now).returns(t)工作.(a)是非常好的方法,但(b)解决方案将与其他测试代码更加一致.

在这个问题上,作者要求提供一般解决方案.对于Ruby,在我的选项中,上述两个解决方案更简单,因此比提取获取当前日期/时间的代码更好.

顺便说一句,我建议使用慢性来获得所需的时间,例如

require 'Chronic'    
mon = Chronic.parse("next week monday")
Time.stubs(:now).returns(mon)
Run Code Online (Sandbox Code Playgroud)

ruby datetime unit-testing ruby-on-rails

5
推荐指数
2
解决办法
1444
查看次数

标签 统计

ruby ×2

unit-testing ×2

datetime ×1

ruby-on-rails ×1

time ×1