콘솔에서 Rails 로그인을 어떻게 테스트합니까?
-
09-06-2019 - |
문제
저는 Rails의 응답 객체를 사용하여 로그인 및 로그아웃하는 방법을 알아내느라 정말 많은 시간을 보냈습니다.표준적인 블로그들은 괜찮았는데, 드디어 진단을 하게 되었고, 여기에 기록하고 싶어졌습니다.
app.get '/'
assert_response :success
app.get '/auth_only_url'
assert_response 302
user = User.find(:user_to_login)
app.post '/signin_url',
:user_email => user.email,
:user_password => '<password in clear>'
assert_response 302
app.follow_redirect!
assert_response :success
app.get '/auth_only_url'
assert_response :success
위의 내용은 인증 요청이 실패한 후 리디렉션되고, 로그인한 후에 리디렉션된다는 의미입니다.
테스트 환경 DB에 픽스처를 로드하려면(일반적으로 레이크 테스트 중에 발생함) 다음을 실행해야 합니다.
rake db:fixtures:load RAILS_ENV=test
(Patrick Richie에서) 기본 URL은 'www.example.com'인 것으로 보입니다.
ActionController::Integration::Session.new.host=> "www.example.com"
actionpack/lib/action_controller/integration.rb#75에 설정되어 있습니다.
통합 테스트에서 이를 변경하려면 다음을 수행하십시오.
session = open_session do |s| s.host = 'my-example-host.com' end
해결책
'www.example.com'은 ActionController::Integration::Session에 설정된 기본 호스트입니다.
>> ActionController::Integration::Session.new.host
=> "www.example.com"
actionpack/lib/action_controller/integration.rb#75에 설정되어 있습니다.
다음을 수행하여 통합 테스트에서 이를 변경할 수 있어야 합니다.
session = open_session do |s|
s.host = 'my-example-host.com'
end
제휴하지 않습니다 StackOverflow