[RSpec][Rails]テスト時にMongoDBのデータを削除(truncate)したい
Ruby2.0, Rails4.0.2で確認
RSpecでMongoDBを用いたテストを作成していたところ、テストを実行するたびに前回のテストのデータが残ってしまっていたのでテスト時にtruncateするようにしました。
database_cleanerを入れて、spec_helperに追記します。
- Gemfileにdatabase_clearnerを追加
# Gemfile
gem "database_cleaner", group: :test
- bundle install
./bin/bundle install
- spec_helperに追記
# spec/spec_helper.rb
RSpec.configure do |config|
# mongodbをテスト時にtruncateするように設定
config.before(:suite) do
DatabaseCleaner[:mongoid].strategy = :truncation
end
config.before(:each) do
DatabaseCleaner[:mongoid].start
end
config.after(:each) do
DatabaseCleaner[:mongoid].clean
end
end
- テスト実行
./bin/rake spec
これでテストの度にデータがリセットされるようになりました。