문제

저는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top