Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Ruby | DatabaseCleanerでテストデータクリア

概要

DatabaseCleanerでテストデータクリア

内容

DatabaseCleanerでテストデータクリアします。

FactoryGirl+Capybara(+ブラウザテスト)などの構成を利用する際に、
FactoryGirlとブラウザ側が別トランザクション管理になるため、
transactionを有効にしないとテストデータを共有できません。
そこでDatabaseCleanerを使用してデータをクリアします。

設定

Gemfileに以下を追加

gem "database_cleaner", "~> 1.0.1"

bundleの実行

bundle

サンプル

RailsRSpecに組み込んでみます。
下記設定で、RSpecの各スペック実行後にDBの内容がクリアされます。

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