君だけの高速に動作するFactoryGirlを作ろう2
fixturesを一切使わないなら、 before(:suite)
の中でレコードの削除と先読みしたいレコード作成しておけば完成する。テスト毎にrollbackもしてくれるし。
https://github.com/fnando/factory_girl-preload/blob/master/lib/factory_girl/preload/rspec2.rb
RSpec.configure do |config|
[...]
config.before(:suite) do
FactoryGirl::Preload.clean
FactoryGirl::Preload.run
end
[...]
end
しかし、fixtuires を使っているとfixtuiresの処理(レコード削除と挿入)と衝突するため、せっかく挿入したレコードが全て削除されてしまう。
fixturesと同居するには、fixtuiresの処理が終わった後に挿入しなければならない。
万事休すかと思ったけどfixutures の初期化処理後にフックできるように作られているようでsuperをmoduleで上書きしてあげるとfixtuires との同居ができる。
https://github.com/rails/rails/blob/5473e390d362755125d2f47b64ef0a135f2fe111/activerecord/lib/active_record/fixtures.rb#L852
ただし他のgemと競合するのは目に見えているので厳しいさをすでに感じる。
-
category:
- ruby