0

私は次の工場を持っています:

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 属性は常にシステムの日付に基づいて返されるため、Timecop で提供された日付に基づいて返されるようにしたいと考えています。出来ますか?

Ruby 2.2.2、Rails 3.2.22、Timecop 0.8.0、Rspec 3.1.0 を使用しています。

4

1 に答える 1

2

値をブロックに渡して、ファクトリ定義がロードされたときではなく、呼び出し時に評価されるようにします。これは と呼ばれLazy attributes、詳細はこちら

FactoryGirl.define do
  factory :task do
    due_date { 7.days.from_now }
  end
end
于 2015-10-13T18:58:30.267 に答える