【发布时间】:2016-01-21 18:06:34
【问题描述】:
在我的应用中,我有一些依赖于分散某些日期的规范:
survey_instance.created_at + 1.day
然后我检查survey_instances 的集合是否有适当的大小。但是这个规范总是在凌晨 3 点失败。我怎样才能分散约会的注意力来避免这个问题?
【问题讨论】:
标签: ruby-on-rails ruby time rspec
在我的应用中,我有一些依赖于分散某些日期的规范:
survey_instance.created_at + 1.day
然后我检查survey_instances 的集合是否有适当的大小。但是这个规范总是在凌晨 3 点失败。我怎样才能分散约会的注意力来避免这个问题?
【问题讨论】:
标签: ruby-on-rails ruby time rspec
针对这个问题,发明了Timecop!
提供“时间旅行”和“时间冻结”功能的 gem,让测试与时间相关的代码变得非常简单。它提供了一个统一的方法来在一次调用中模拟 Time.now、Date.today 和 DateTime.now。
捆绑它并将您的规范更改为:
Timecop.freeze(2015, 10, 21, 10, 5, 0) do
# whatever your assertion is
end
这将确保此测试始终在一天中的同一时间运行。
【讨论】: