hello-world.jp.net
webエンジニアのメモ。とりあえずやってみる。

[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

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

参考


Related #MongoDB

MongoDB Advent Calendar 2013 20日目の記事を書きました

MongoDB Advent Calendar 2013に招待いただいたので20日目の記事を書きました。

Rails4でTwitterStreamingAPIを使う その2

Ruby2.0,Rails4で確認