У меня есть приложение 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)>'
Мы не можем воспроизвести ошибку локально с помощью начального числа из запуска rspec, и у нас серьезные проблемы с отладкой.