Сбой функции Cucumber после обновления до Devise 1.2.1

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть приложение наhttp://github.com/rails3book/ticketee который в настоящее время завершается сбоем при запуске функций с использованием bundle exec cucumber features/signing_up.feature .

   Scenario: Signing up
    Given I am on the homepage
    When I follow "Sign up"
    And I fill in "Email" with "user@ticketee.com"
    And I fill in "Password" with "password"
    And I fill in "Password confirmation" with "password"
    And I press "Sign up"
    Then show me the page
    Then I should see "You have signed up successfully."
      Failed assertion, no message given. (MiniTest::Assertion)
      /Users/ryanbigg/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:85:in `assert'
      /Users/ryanbigg/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/test/unit/assertions.rb:19:in `assert'
      ./features/step_definitions/web_steps.rb:105:in `block (2 levels) in <top (required)>'
      ./features/step_definitions/web_steps.rb:13:in `with_scope'
      ./features/step_definitions/web_steps.rb:101:in `/^(?:|I )should see "([^"]*)"(?: within "([^"]*)")?$/'
      features/signing_up.feature:14:in `Then I should see "You have signed up successfully."'

Failing Scenarios:
cucumber features/signing_up.feature:6 # Scenario: Signing up
  

Эта функция не давала сбоев до того, как я обновил Devise с 1.1.8 до 1.2.1. Сейчас она не работает, потому что перенаправляет пользователя на страницу входа, как только он перенаправляется на корневой путь после успешного входа.

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

До сих пор я пытался выяснить, что происходит не так, но безрезультатно. Если у вас есть какие-либо идеи, они были бы очень признательны.

Ответ №1:

Проблема в том, что пользователь не вошел в систему после регистрации, потому что он ожидает подтверждения. Если вы удалите confirmable из своей пользовательской модели, то функция пройдет. Другим решением является ожидание сообщения о подтверждении в вашей функции:

«Вы должны подтвердить свою учетную запись, прежде чем продолжить».

Однако то, что происходит до подтверждения, devise перенаправляет на корневую страницу с этим флэш-сообщением. Ваш root определен как projects#index, для которого требуется выполнить вход в вашем before_filter, поэтому вы снова будете перенаправлены обратно на страницу входа и вместо этого увидите:

«Вам необходимо выполнить вход или зарегистрироваться, прежде чем продолжить».