транзакция очистки базы данных с огурцовыми рельсами - PullRequest
2 голосов
/ 22 сентября 2011

Я пишу сценарий для формы регистрации.

     @abc

     @selenium

     Scenario:Non registered user signs up
        Given I am on the sign-up page
        When I fill in the following:
          |first_name|Anidhya|
          |last_name|Ahuja|
          |email|anidhya@gmail.com|
          |password|123456|
        And I press "submit"
        Then I should see "Registration complete"

Я хочу использовать очиститель базы данных для отката тестовой базы данных после этого сценария, чтобы я мог использовать этот сценарий снова и снова.

Для этого внутри моего файла env.rb я написал:

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

  Cucumber::Rails::World.use_transactional_fixtures = true

rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end 


Before('@abc') do
  DatabaseCleaner.start
end
After('@abc') do
  DatabaseCleaner.clean
end

Теперь, когда я запускаю сценарий, пользователь сохраняется в базе данных и происходит сбой очистителя базы данных. Я не вижу сообщений об ошибках

  • Не могли бы вы уточнить, как использовать очиститель базы данных только для одного сценария. Я хочу использовать очиститель только для этого сценария.
  • Не могли бы вы также указать существенную разницу между использованием усечения и транзакции. Я думаю, что усечение очищает всю базу данных, но я не хочу этого.
  • Есть ли лучший способ выполнить тестирование регистрации, чем этот?

1 Ответ

5 голосов
/ 24 сентября 2011

Вы не можете запускать транзакции с селеном, потому что тест выполняется на двух отдельных экземплярах приложения AFAIK

...