[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

これでテストの度にデータがリセットされるようになりました。

参考