はじめに
turnipとchromedriverを使った、RailsのE2Eテストの導入を検討しています。こちらの記事で、turnipで、FactoryBotを使用して初期データの作成及びその利用まで成功しましたが、テスト後にtestデータベースにデータが残ってしますので、それを削除する仕組みを導入します。
環境
macOS Majave 10.14.5
ruby 2.4
Rails 5.0.4
database_cleaner 1.7.0
結論
DatabaseCleanerという、gemを入れました。
group :development, :test do
gem 'database_cleaner' # 追加
end
bundle isntall
spec/spec_helper.rb
require 'database_cleaner' # 先頭に追記
RSpec.configure do |config|
...
DatabaseCleaner.stategy = :truncation
# RSpecの実行前に1度、実行
config.before(:suite) do
DatabaseCleaner.clean
end
# rspecでいうexample、turnipでいうシナリオが終わるごとに実行
config.before(:each) do
DatabaseCleaner.clean
end
# 最後に1度、実行
config.after(:suite) do
DatabaseCleaner.clean
end
...
end
これで、テスト実行後の、testテーブルは毎回空になるようになりました。