规格在同一时间失败

时间:2015-10-22 12:46:50

标签: ruby-on-rails ruby time rspec

在我的应用程序中,我有一些规格依赖于分散某些日期:

survey_instance.created_at + 1.day

然后我检查survey_instances的集合是否具有适当的大小。但是这个规格总是在凌晨3点失败。我怎样才能分散日期以避免这个问题呢?

1 个答案:

答案 0 :(得分:2)

对于这个问题,发明了Timecop

  

提供"时间旅行的宝石"并且"时间冻结"功能,使测试时间相关的代码变得简单。它提供了统一的方法来在一次调用中模拟Time.now,Date.today和DateTime.now。

捆绑它并将您的规范更改为:

Timecop.freeze(2015, 10, 21, 10, 5, 0) do
  # whatever your assertion is
end

这将确保此测试始终在一天的同一时间运行。