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)
- 作者: David Chelimsky,Dave Astels,Zach Dennis,角谷 信太郎,豊田 祐司,株式会社クイープ
- 出版社/メーカー: 翔泳社
- 発売日: 2012/02/22
- メディア: 大型本
- 購入: 7人 クリック: 141回
- この商品を含むブログ (18件) を見る