【问题标题】:Spec is failing on the same hour规范在同一时间失败
【发布时间】:2016-01-21 18:06:34
【问题描述】:

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

survey_instance.created_at + 1.day

然后我检查survey_instances 的集合是否有适当的大小。但是这个规范总是在凌晨 3 点失败。我怎样才能分散约会的注意力来避免这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby time rspec


    【解决方案1】:

    针对这个问题,发明了Timecop

    提供“时间旅行”和“时间冻结”功能的 gem,让测试与时间相关的代码变得非常简单。它提供了一个统一的方法来在一次调用中模拟 Time.now、Date.today 和 DateTime.now。

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

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

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

    【讨论】:

    • 这是一个很好的解决方案,但我正在考虑在不使用任何新 gem 的情况下解决这个问题。
    • @MateuszUrbański 为什么你要剥夺自己一般来说 Ruby 和开源的一大优势?
    • 我决定使用预定义的 created_at 创建测试对象。谢谢大家的帮助。
    • @MateuszUrbański 具有预定义属性的装置/工厂当然是一个完美的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多