読者です 読者をやめる 読者になる 読者になる

factory_girlでのparent指定と関連の定義

Rails Ruby

今更factory_girl v1.3.3の話

factory_girlでデータ定義していくときに少しだけ値が違うみたいな時は
継承してdefineできる

#-*- coding: utf-8 -*-
Factory.define :madoka do |f|
  f.first_name 'kaname'
  f.last_name 'madoka'
end

Factory.define(:homura, :parent => :madoka) do |f|
  f.last_name 'homura'
end
## Factory(:homura)すると鹿目ほむらちゃんができるとかそういうはなし


あと、注意していないと忘れるのは参照元のモデルのFactoryを作るとき
参照先を遅延評価を使って作成した時

## factory
Factory.define :hoge do |f|
  f.fuge { Factory(:fuge) }
end

参照先のテストをしていてFactory(:hoge)を実行していて
参照元を作成したいとなった時にうまくいかない


こういうやつですか

hoge = Factory(:hoge)
hoge.fuge = Factory(:fuge)

当然ながらFactory(:fuge)したときにFactory(:hoge)が遅延評価され
hogeとは全く関係ないHogeを関連先に持った値が作成されてしまうので


そういうときはこうなのかな

hoge = Factory(:hoge)
hoge.fuge = Factory(:fuge, :hoge => hoge)