rspec测试与假日期

时间:2014-07-03 13:26:08

标签: ruby-on-rails date rspec lambda

我尝试伪造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测试这样的场景?

1 个答案:

答案 0 :(得分:2)

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

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