リア充爆発日記

You don't even know what ria-ju really is.

RSpecのおともにdatabase_cleaner

何かの拍子にテストの一部が通らなくなった。コードを追ってみても原因がわからず、そこそこハマった結果、DBにゴミデータが残っていることが原因だとわかった。

きっと実行の途中で止めちゃったりしたんだろう。
また同じようなことが起きたら、きっとこれを思い出さずに、同じくらいハマるんだろうな、と思って、テスト起動時にDBをクリアできるものないかな、と探してみたらソッコー見つかった。

https://github.com/bmabey/database_cleaner
そのまんま。

設定もかんたん。

Gemfile
~snip~
  gem 'database_cleaner'
~snip~
spec_helper.rb
RSpec.configure do |config|
~snip~
  config.before(:suite) do
    DatabaseCleaner.strategy = :transaction
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end
~snip~

この設定は、テストごとにDBをキレイにする設定。設定は状況によって使い分けのできるオプションなどあるので、詳しくは公式を。

っていうか、今まで知る機会がなかったのにビビった。

The RSpec Book (Professional Ruby Series)

The RSpec Book (Professional Ruby Series)