dev/mom0tomo

技術メモ

FactoryBotとfixturesの比較

Rspecを使ってテストを書いているが、どちらを使うべきかいつもパッと浮かばないのがイヤなので、まとめた。

読んだもの

woshidan.hatenablog.com blog.jnito.com

学んだこと

fixtures

固定のデータ(都道府県など)がほしいときに使う。
コントローラのテストなどで使う。

良い点

  • IDが固定化できる
  • 誤って同じレコードを複数作成する恐れがない
  • 多対多のアソシエーションを簡単に書ける

悪い点

  • モデルとは連携しない。バリデーションも通らない
  • テーブルのカラムが増えたりすると書き直す必要がある
  • テストデータは毎回自動的に全件投入される
  • 「このテストケースのときだけここの値を変えたい」ができない

FactoryBot

モデルのメソッドの境界値条件などのテストを書きたいときに使う。

良い点

  • 複数のデータを簡単に生成できる
  • テストコード側で動的にテストデータを変更できる
  • モデルのvalidationを通る

悪い点

  • テストデータを投入するコードを書く必要がある
  • 親子孫や多対多のアソシエーションを書くときに面倒