Ruby on rails 假日期rspec检验

Ruby on rails 假日期rspec检验,ruby-on-rails,date,rspec,lambda,Ruby On Rails,Date,Rspec,Lambda,我试图伪造日期。今天是为了在我的rails应用程序中测试一个场景: before do Date.stub(:today).and_return("2010-10-01".to_date) end 我有一个范围(我使用的是Squel gem),应该可以在我的DB中找到未来的付款: class Payment < ActiveRecord::Base scope :future, -> { where{payment_date > Date.today} } end

我试图伪造
日期。今天
是为了在我的rails应用程序中测试一个场景:

before do
  Date.stub(:today).and_return("2010-10-01".to_date)
end
我有一个范围(我使用的是Squel gem),应该可以在我的DB中找到未来的付款:

class Payment < ActiveRecord::Base
  scope :future, -> { where{payment_date > Date.today} }
end
classpayment{where{payment_date>date.today}
结束
(我使用lambda来实现这一点,因为在最初的代码中,scope使用了一个筛选器,我在这里发布了一个简化的代码。)


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

你应该看看TimeCop宝石。我允许在给定的时间冻结日期

这里是链接

这正是创建Timecop的目的所在。