【问题标题】:Timecop does not work with DateTime attributes defined in FactoryGirlTimecop 不适用于 FactoryGirl 中定义的 DateTime 属性
【发布时间】:2015-10-13 18:56:21
【问题描述】:

我有以下工厂:

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。

【问题讨论】:

    标签: ruby-on-rails ruby rspec timecop


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多