【问题标题】:rspec test with fake date带有假日期的 rspec 测试
【发布时间】:2014-07-03 21:57:04
【问题描述】:

我试图伪造Date.today 以便在我的rails 应用程序中测试一个场景:

before do
  Date.stub(:today).and_return("2010-10-01".to_date)
end

我有一个范围(我正在使用 squeel gem),它应该可以在我的数据库中找到未来的付款:

class Payment < ActiveRecord::Base
  scope :future, -> { where{payment_date > Date.today} }
end

(我用 lambda 来做,因为在原始代码中,作用域使用了一个 sifter,我在这里发布了一个简化的代码。)

当我运行规范时,似乎日期是在 lambda/sql 中计算的,并且与实际日期(而不是我的假 01/10/10)相比,我得到了未来付款的结果 - 你能确认我吗对吗?你有一个建议我如何用 rspec 测试这样的场景?

【问题讨论】:

    标签: ruby-on-rails date rspec lambda


    【解决方案1】:

    您应该看看 TimeCop gem。我允许在给定时间冻结日期。

    这是链接 https://github.com/travisjeffery/timecop

    【讨论】:

    • 这正是 Timecop 旨在解决的问题。
    猜你喜欢
    • 2021-02-03
    • 2012-05-27
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 2017-06-19
    • 2014-04-21
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多