2017年4月18日火曜日

rspecでtimecopで日時を固定したのにFactoryGirlのデータが固定されない

rspecのテストで特定の日時でのテストをしたくて、
timecopで日時を固定したのにFactoryGirlのデータが固定された日付ではなく、
現在日時のデータになってしまったので、調べました。

環境は以下です
timecop 0.8.0
factory_girl 4.5.0
rspec 3.5.0

テストデータとテストはこんな感じです。
FactoryGirl.define do
  factory :aaa do
    target_date Date.today.tomorrow
  end
end

Timecop.freeze(Date.parse('2017-04-04'))
aaa = FactoryGirl.create(:aaa)
expect(aaa.target_date == Date.today.tomorrow).to eq(true)
実行すると、trueにならずにテスト失敗となります。。

FactoryGirlの書き方を以下のようにすると、ちゃんと固定された日時を元に日付が入りました
target_date { Date.today.tomorrow }

参考URL
http://stackoverflow.com/questions/33110516/timecop-does-not-work-with-datetime-attributes-defined-in-factorygirl

0 件のコメント:

コメントを投稿