Timecop 不适用于 FactoryGirl 中定义的 DateTime 属性

Timecop does not work with DateTime attributes defined in FactoryGirl

我有以下工厂:

FactoryGirl.define do
  factory :task do
    due_date 7.days.from_now
  end
end

在我的规范中,我是这样使用 Timecop 的:

before do
  Timecop.freeze(Time.parse("Oct 5 2015"))
end

Time.now 和 Date.today 按预期的给定时间存根,但工厂的 due_date 属性始终 returns 基于日期系统,我希望它根据 Timecop 中提供的日期 return。可能吗?

我正在使用 Ruby 2.2.2、Rails 3.2.22、Timecop 0.8.0 和 Rspec 3.1.0。

将值传递给块,以便在调用时对其进行评估,而不是在加载工厂定义时进行评估。这叫做 Lazy attributes,更多关于 here

FactoryGirl.define do
  factory :task do
    due_date { 7.days.from_now }
  end
end