Isso deve ser salvo em algum lugar em spec/support/database_cleaner.rb
. Dois recursos principais são: example.metadata[:type]
determinar se é um recurso e deve ser executado com truncamento e o segundo é envolver tudo no around
gancho em vez de before
, para executar depois de outro after
gancho – isso me ajudou com alguns desdravos de banco de dados estranhos.
RSpec.configure do |config|
config.use_transactional_fixtures = false
config.around(:each) do |example|
DatabaseCleaner.strategy = if example.metadata[:js] || example.metadata[:type] == 'feature'
:truncation
else
:transaction
end
DatabaseCleaner.start
example.run
Capybara.reset_sessions!
DatabaseCleaner.clean
end
end