#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, поэтому вы снова будете перенаправлены обратно на страницу входа и вместо этого увидите:
«Вам необходимо выполнить вход или зарегистрироваться, прежде чем продолжить».