私のプロジェクトでは、データベースのマルチテナンシー '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
別のスキームでデータをクリアする方法