2017-12-05 3 views
0

capybara 2.13 기능 사양이있는 레일 5 앱이 있습니다. 하나의 사양은 앱의 콜백 경로로 리디렉션 URL을 포함하는 세 부분으로 된 트랜잭션 흐름을 완료합니다. 세션의 트랜잭션 ID를 session[:current_transaction_id]으로 저장 한 다음이 태그를 사용하여 콜백을 처리 할 때 트랜잭션을 조회합니다. 이것은 잘 동작하지만 capybara로 테스트 할 때 session 해시가 누락되어 :current_transaction_id입니다.Capybara 세션이 API 콜백으로 유지되지 않음

내가 unsuccessfuly 내가 주어진 스펙을 통해 지속 세션을 얻을 수있는 방법 https://github.com/teamcapybara/capybara#using-sessions

Capybara.using_session("User session") do 
    # log in and complete a transaction 
end 

에 설명 된대로 내 사양을 포장하려고했습니다?

+1

Capybaras'using_session'은 사용자가 묻는'session'을 참조하지 않습니다. 그것은 Capybara에서 사용하는 브라우저 또는 브라우저/앱 쌍 인스턴스를 말하며, 테스트하는 동안 두 명의 다른 사용자를 동시에 테스트 (채팅, 실시간 상태 업데이트 등)해야 할 경우 일반적으로 사용됩니다. 쿠키 기반 세션을 사용하고 있습니까? 그렇다면 원래 방문한 (하위) 도메인 (거래 ID를 설정 한 곳)과 리디렉션 된 도메인 (세션 쿠키가 설정된 수준 이상)이 같은지 확인하십시오. 만약 그들이 당신에게 질문을 테스트 코드를 추가 수정하지 않습니다. –

+0

도메인 문제였습니다! 고맙습니다! – HarlemSquirrel

+0

질문을 완료로 표시 할 수 있도록 답변으로 추가되었습니다. –

답변

1

Capybaras using_session은 사용자가 요청한 세션을 나타내지 않습니다. 그것은 Capybara에서 사용하는 브라우저 또는 브라우저/앱 쌍 인스턴스를 말하며, 테스트하는 동안 두 명의 다른 사용자를 동시에 테스트 (채팅, 실시간 상태 업데이트 등)해야 할 경우 일반적으로 사용됩니다.

쿠키 기반 세션을 사용하는 경우 원래 방문한 (하위) 도메인 (거래 ID 설정 위치)과 리디렉션 된 도메인 (세션 쿠키가 설정된 수준 이상)이 동일한 지 확인해야합니다 에서). 그렇지 않은 경우 세션 쿠키는 더 이상 리디렉션 요청에 대해 유효하지 않으므로 (전송되지 않음) 따라서 트랜잭션 ID를 사용할 수 없습니다.