RailsTutorialに従ってRSpecを使って
authenticate(@user.password)
を試そうとしたところ、突っ込んだ前のデータと合わずにテスト失敗。。。
Database Cleanerを使えばいいらしいっす。
(追加するとテストを実行する度にテストデータが消去される。)
下記のように各ファイルを編集。
Gemfile
group :development,:test do
gem 'database_cleaner'
end
spec/spec_helper.rb
require 'database_cleaner'
RSpec.configure do |config|
# 中略
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
これで前のテストでのデータが消去されて、テストが通りました。
めでたしめでたし。
※各テストのbefore(:each)で作成したテストデータは消去されるが、before(:all)で作成したテストデータは消去されないらしい。
参照:http://dev.classmethod.jp/server-side/ruby-on-rails/ruby-on-rails_database-cleaner_data_erase/