2014-10-28 4 views
1

Я разрабатываю приложение для рельсов, и я следую знаменитому учебнику Майкла Хартла. Я использую более новые версии RSpec и Capybara и поэтому столкнулся с проблемой. Начиная с Capybara 2, вам нужно place tests using Capybara in spec/features. RSpec Capybara does no longer работа в запросе спецификация. Решение, которое дает Hartl, поэтому больше не работает (он ставит все свои тесты в spec/request).Войти пользователя без Capybara в запросе spec

Мне нужно войти в систему без использования Capybara в тесте запроса (потому что в тесте используется «put», который доступен только в запросах). Другие с той же проблемой, по-видимому, решил его:

post login_path(session: { password: user.password, email: user.email }) 
cookies[:remember_token] = user.remember_token 

, но я получаю сообщение об ошибке:

Failure/Error: before { valid_login_request(user) } 
NoMethodError: 
    undefined method `[]' for nil:NilClass 
# ./app/controllers/sessions_controller.rb:7:in `create' 
# ./spec/support/utilities.rb:13:in `valid_login_request' 
# ./spec/requests/authentication_pages_spec.rb:22:in `block (4 levels) in <top (required)>' 

и в sessions_controller.rb: 7 является следующий код:

user = User.find_by_email(params[:session][:email]) 

После некоторого исследования я обнаружил, что это сеанс нулевой, и поэтому я получил «NoMethodError» выше. Как я могу это решить?

ответ

0

Я решил. Я перешел к новому руководству Хартла, и там я нашел способ авторизовать пользователя как с временными, так и с постоянными куками.

Смежные вопросы