この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
前回、FactoryGirlによるテストデータの準備という記事を書きました。このFactoryGirlにて作成するテストデータを、テストを実行する度に消去するDatabase Cleanerについて、今回は書いてみたいと思います。
使い方
使い方は非常に簡単で、以下のような流れになります。
- Gemをインストールする
- 消去するタイミング等を定義する
以下、手順です。
1.Gemfile
Gemfileに以下を記述し、bundle installします。test時にしか使わない場合(ほとんどこのケースと思われる)、「group :test」の中に記述したほうがいいと思います。
group :development,:test do
gem 'database_cleaner'
end
2.spec_helper
spec_helper.rbに以下を記述します。
require 'database_cleaner'
RSpec.configure do |config|
(中略)
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
追加したのは1行目と、6~16行目です。これらを追加することにより、テストを実行する度にテストデータが消去されます。注意点としては、この書き方では各テストのbefore(:each)で作成したテストデータは消去されますが、before(:all)で作成したテストデータは消去されないことです。
まとめ
RSpecでテストデータを扱う際、作成にはFactoryGirl、消去にはDatabase Cleanerと、セットで使うと色々便利かと思います。