フィクスチャ
テスト用データを自動的に用意するための仕組み
参考:
使い方
- フィクスチャは YAML で記述する
- YAML ファイル内で ERB が使用できる
参考:
Rails のテストで初期データ投入をしてくれる Fixture のつかいかた – Qiita
私が Minitest と Rails の Fixtures にハマった7つの理由 | 有頂天 Ruby
fixtures ファイルの読込に関してのまとめ | odalog
fixtures | Rails ドキュメント (railsdoc.com)
Using Rails Fixtures To Seed a Database | Brandon Hilkert
関連付けを使用する
関連付けするアソシエーションの項目にフィクスチャの定義名を記述する。
参照元での記述
# books.yml book_one: auther: auther_one
参照先での記述
# authers.yml auther_one: name: John
参考:
Rails のテストで初期データ投入をしてくれる Fixture のつかいかた – Qiita
テストからフィクスチャのレコードを参照する
テーブル名のメソッドにフィクスチャファイルにおける定義名をシンボルで渡す。
@user = users(:one)
参考:
Rails のテストで初期データ投入をしてくれる Fixture のつかいかた – Qiita
フィクスチャと seed の使い分け
参考:
テストデータと fixture と seed – Qiita
FixtureSet
参考:
ActiveRecord::FixtureSet | Ruby on Rails API [Official]
ロード
参考:
fixtures – ActiveRecord::TestFixtures::ClassMethods | Ruby on Rails API [Official]
rails/minitest don’t load fixtures for select tests – Stack Overflow
fixture_path
参考:
Configuring fixture_path in ActiveRecord test fixtures – Stack Overflow
ERB でアセット URL ヘルパーを使う
test_helper.rb
で ActiveRecord::FixtureSet.context_class
に ActionView::Helpers::AssetUrlHelper
をインクルードする。
ActiveRecord::FixtureSet.context_class.include( ActionView::Helpers::AssetUrlHelper )
フィクスチャファイルでアセット URL ヘルパーを使う。
one: image_path: <%= asset_path("image_001.png") %> two: image_path: <%= asset_path("image_002.png") %>
参考:
context_class – ActiveRecord::FixtureSet | Ruby on Rails API [Official]
ActionView::Helpers::AssetUrlHelper | Ruby on Rails API [Official]
画像を登録する
参考:
Rails のテストで fixture に画像を登録する方法 | 人と情報
rails でテストや開発用の初期データ (バイナリ) を用意する方法 – スタック・オーバーフロー
画像をアップロードする
参考:
Rails のテストで画像をアップロードする方法 | 人と情報
Rails でファイルアップロードをテストする | tanihiro.log
fixture_file_upload – ActionDispatch::TestProcess::FixtureFile | Ruby on Rails API [Official]
データベースにロードする
開発用データベースにフィクスチャをロードする。
$ RAILS_ENV=development rails db:fixtures:load
参考:
rails db:fixtures:load を使おう | KAYAC engineers’ blog
データベースのクエリ結果を含める
参考:
use rails fixture object in another fixture file – Stack Overflow
ActiveRecord::TestFixtures
参考:
ActiveRecord::TestFixtures | Ruby on Rails API [Official]
ActiveRecord::TestFixtures::ClassMethods | Ruby on Rails API [Official]
rails/test_fixtures.rb at v6.0.0.rc1 · rails/rails – GitHub
CarrierWave
参考:
CarrierWave を使いつつ fixtures + minitest で test を書く – Qiita
比較
参考:
Minitest と RSpec、Fixtures と FactoryGirl の良いところ悪いところをコードを書いて比較してみた | give IT a try
ActiveRecord を使わないモデルでエラー
テスト実行時に存在しないテーブルにアクセスしようとしてエラーが発生する。
対策:
該当するフィクスチャを読み込まないようにする。
参考:
Unit Testing non activerecord models and still load fixtures – Stack Overflow
Tips
参考:
Tricks and Tips for using Fixtures effectively in Rails | BigBinary Blog