2

私のプロジェクトでは、データベースのマルチテナンシー 'apartment' gem を使用しています。

config/initializers/apartment.rb 

Apartment.configure do |config|
 config.excluded_models = %w{ User Company }
end

テストするデータベースをクリーンアップするには、「database_cleaner」gem を使用します

spec/rails_helper.rb

RSpec.configure do |config|
  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.clean_with(:truncation)
  end

  config.before(:each) do |example|
    DatabaseCleaner.strategy= example.metadata[:js] ? :truncation : :transaction
    DatabaseCleaner.start
    Apartment::Tenant.switch!('app')
  end

  config.after(:each) do
    Apartment::Tenant.switch!
    DatabaseCleaner.clean
  end

end

Capybara の切り捨て戦略を使用した RSpec テストでは、ユーザーと会社のみの公開スキーマのみを各テスト後にクリーンアップします。

Before test start 
Company.count#=> 0

他のスキームはクリアされません。

Before test start
SomeModelInCompanySchema.count#=> 240

別のスキームでデータをクリアする方法

4

1 に答える 1