Не уверен на 100% в поведении по умолчанию, я использовал для этой цели гем database_cleaner .Ниже приведен соответствующий код в моем spec_helper.rb
:
require 'database_cleaner'
RSpec.configure do |config|
# Truncated for brevity
config.before :suite do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with :truncation
end
config.before :each do
DatabaseCleaner.start
end
config.after :each do
DatabaseCleaner.clean
end
end
Одно предостережение, если вы идете по этому маршруту, убедитесь, что вы удалили строку config.use_transactional_fixtures
по умолчанию spec_helper.rb
, если вы используете очистку транзакциистратегия - оставив значение true, вызывает транзакцию в ошибках транзакции (по крайней мере, для баз данных sqlite).