Cucumber - очиститель базы данных не работает, если включен драйвер по умолчанию (селен) - PullRequest
1 голос
/ 25 июля 2011

Я использую огурец + капибару для своих тестов. Очиститель базы данных работает хорошо, но когда я изменяю Capybara.default_driver на селен, очиститель базы данных не работает.Ниже мой файл env.rb.

Capybara.default_selector = :css
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
ActionController::Base.allow_rescue = false
Cucumber::Rails::World.use_transactional_fixtures = true

if defined?(ActiveRecord::Base)
  begin
    require 'database_cleaner'
    DatabaseCleaner.strategy = :truncation
  rescue LoadError => ignore_if_database_cleaner_not_present
  end
end

OmniAuth.config.test_mode = true

1 Ответ

15 голосов
/ 09 ноября 2011

Из базы данных database_cleaner Документация , надеюсь, это поможет:

Одним из мотивов для написания этой библиотеки был простой способ включить то, что Rails называет «транзакция-фиксация»в моих не рельсах проекты ActiveRecord.Например, Cucumber поставляется с миром Rails, который обернет каждый сценарий в транзакции.Это здорово, но что, если вы используете ActiveRecord в не-рельсовом проекте?Раньше вам приходилось копировать и вставлять необходимый код, но теперь с DatabaseCleaner вы можете сказать:

# env.rb

   require 'database_cleaner'
   require 'database_cleaner/cucumber'
   DatabaseCleaner.strategy = :transaction

Теперь предположим, что вы запускаете свои функции, и для этого требуется, чтобы был задействован другой процесс (например, Selenium, работающий на сервере вашего приложения.) Вы можете просто изменить тип своей стратегии:

# env.rb

require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :truncation

Вы можете получить лучшее из обоих миров и использовать лучший для своей работы:

# env.rb

require 'database_cleaner' 
require 'database_cleaner/cucumber'

DatabaseCleaner.strategy = (ENV['SELENIUM'] == 'true') ? :truncation : :transaction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...