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

时间:2015-10-13 18:56:22

标签: ruby-on-rails ruby rspec timecop

我有以下工厂:

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属性总是根据系统的日期返回,我希望它根据提供的日期返回时空特警。有可能吗?

我使用Ruby 2.2.2,Rails 3.2.22,Timecop 0.8.0和Rspec 3.1.0。

1 个答案:

答案 0 :(得分:2)

将值传递给一个块,以便在调用时评估它,而不是在加载工厂定义时。这称为Lazy attributes,更多关于here

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