テスト全般で使用する共通データは都度テスト内で作っていては煩雑になるため、 rails_helper.rb
などからスクリプトを呼び出して一括で作成するように設定をしましたのでそちらの方法を残しておきます。
モジュールの作成
spec/support/insert_master_data.rb
を作ってそちらにデータ作成のスクリプトを書いていきます。
module InsertMasterData
def self.insert_master_data
Category.delete_all
Factory.create(:category, name: 'ブログ', code: 'blog')
Factory.create(:category, name: 'ユーチューブ', code: 'youtube')
end
end
最初に delete_all
などで重複しないようにしてください。
モジュールの呼び出し
先ほど作成したモジュールを rails_helper.rb
で呼び出し、テストを実行する前にマスターデータを作成する様に設定します。
RSpec.configure do |config|
config.include InsertMasterDataModule
InsertMasterDataModule.insert_master_data
end
include
でモジュールを読み込んでからメソッドを呼び出してください。こうすることでマスターデータが作成されます。
まとめ
最初は seeds.rb
を呼び出してみたんですが、factoryとmodelが混在してしまうのと、GitHubのActionsで引っかかってしまったのでこちらの方法に変えました。ただunique制約があるものは重複対策をしておかないといけず、テストごとに毎回呼ばれてしまっているのが気になっています。他に良い方法をご存知の方がいらっしゃいましたらご教示いただけますと幸いです。
コメント