【Rspec】テスト全般にわたって使用するデータを一括で作成する方法

【Rails】テスト全般にわたって使用するデータを一括で作成する方法 Rspec
【Rails】テスト全般にわたって使用するデータを一括で作成する方法

テスト全般で使用する共通データは都度テスト内で作っていては煩雑になるため、 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制約があるものは重複対策をしておかないといけず、テストごとに毎回呼ばれてしまっているのが気になっています。他に良い方法をご存知の方がいらっしゃいましたらご教示いただけますと幸いです。

コメント

タイトルとURLをコピーしました