为当前时间的代码编写单元测试的最佳方法是什么?例如,某些对象可能仅在工作日创建,其他对象在检查执行某些操作的权限时会考虑当前时间等.
我想我应该嘲笑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)