Rspecでseeds.rbをリセット時に読み込む。
プロジェクトにrspecとfactory girlのgemを追加して seeds.rbを読み込んでから、毎回テストを起動したかったのでこのあたりをまとめておく。
環境
rspecとfactory girlの導入
まずは、Gemfileにrspec_rails
とfactory_girl_rails
を追加してbundle install
します
# Gemfileにgemを追加 group :development, :test do gem 'rspec_rails' gem 'factory_girl_rails' end group :test do gem 'database_clear' end
bundle install
rspec install
$ rails g rspec:install
環境別のseedを作成する
これはRails.env.hoge?
で切り分ければ、seeds.rbにまとめることもできる。
env毎のファイルを作成する。
mkdir db/seeds touch db/seeds/test.rb touch db/seeds/development.rb touch db/seeds/production.rb
db/seeds/test.rb
とdb/seeds/development.rb
に記述を追加
values = { email: 'hoge@example.com'... } # attriubutesを設定する。 Admin.create(values)
seeds.rb
に下記のコードを追加。
load(Rails.root.join( 'db', 'seeds', "#{Rails.env.downcase}.rb"))
テスト時にdbをリセットして、seedsを読み込む。
#clean_with
の引数に、exceptでクリーンにしないmodel名を記述することもできます。
config.before(:suite) do load Rails.root.join('db', 'seeds.rb') DatabaseCleaner.clean_with :truncation # DatabaseCleaner.clean_with :truncation, { except: %w(categories brands) } end