Конфигурация: Интеграционные тесты для проекта Rails с использованием RSpec, Capybara, драйвера Selemium, базы данных SQLite.
Ситуация: У меня было несколько тестов интеграции с Capybara и драйвером rack_test по умолчанию. Они создают регистрацию пользователя (для Devise gem) непосредственно в базе данных. Затем они заходят в систему и тестируют сценарий с использованием Capybara DSL, как это сделал бы пользователь.
Проблема: Я попытался изменить драйвер на Selenium, чтобы проверить код JavaScript. Теперь тесты терпят неудачу, потому что приложение не видит регистрации пользователя, что созданные тесты.
Исследование: Похоже, что драйвер Selenium работает по-разному с трансациями, поэтому изменения, сделанные в тесте, невидимы в веб-приложении. Возможное решение:
config.use_transactional_fixtures = false
DatabaseCleaner.strategy = :truncation