2014-10-28 2 views
1

저는 레일 애플리케이션을 개발 중이며 Michael Hartl의 유명한 자습서를 따르고 있습니다. 저는 RSpec과 Capybara의 최신 버전을 사용하고 있으므로 문제가 발생했습니다. 카피 바라 2 이후, place tests using Capybara in spec/features이 필요합니다. RSpec Capybara does no longer 요청 사양에서 작동합니다. Hartl이 제공하는 솔루션은 더 이상 작동하지 않습니다 (그는 모든 테스트를 사양/요청에 포함 시켰습니다).Capybara가없는 로그인 사용자입니다.

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에서을 :

user = User.find_by_email(params[:session][:email]) 
: 7은 다음과 같은 코드

약간의 연구가 끝난 후, 세션이없는 것으로 밝혀졌고 이것이 내가 위의 "NoMethodError"를 얻은 이유입니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

0

해결되었습니다. 나는 Hartl의 새 가이드로 이동했는데 임시 쿠키와 영구 쿠키로 사용자를 인증하는 방법을 찾았습니다.