У меня есть приложение rails, использующее rspec и включающее DatabseCleaner, чтобы гарантировать чистоту тестовой базы данных между каждым тестом.
DatabaseCleaner настроен в нашем spec/rails_helper.rb
с
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
Мы наблюдаем периодические ошибки в нашей среде ci, где один тест завершится неудачно с
1) LibraryHours Required fields Library Hour must have a location
Failure/Error:
DatabaseCleaner.cleaning do
example.run
end
NoMethodError:
undefined method `rollback' for nil:NilClass
# ./spec/rails_helper.rb:66:in `block (2 levels) in <top (required)>'
Мы не можем локально воспроизвести ошибку с помощью seed из прогона rspec, и у нас возникли серьезные проблемы с отладкой.