2017-12-05 9 views
0

私はcapybara 2.13の機能仕様のレール5アプリを持っています。 1つの仕様は、アプリケーション内のコールバックパスへのリダイレクトURLを含む3つの部分からなるトランザクションフローを完成させます。セッションのトランザクションIDをsession[:current_transaction_id]として保存してから、コールバックを処理するときにトランザクションをルックアップするためにこのIDを使用します。これは開発には問題ありませんが、capybaraでテストすると、sessionハッシュはなくなっています:current_transaction_idcapybaraセッションはapiコールバックで保存されていません

は私unsuccessfuly、私は与えられた仕様を通じて持続するセッションを取得できますかhttps://github.com/teamcapybara/capybara#using-sessions

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

で説明したように、私のスペックをラップしようとしましたか?

+1

カピバラス 'using_session'はあなたが求めている' session'を参照していません。これは、Capybaraによって使用されるブラウザまたはブラウザ/アプリのペアのインスタンスを指し、テスト中に2人の異なるユーザーを同時にアプリケーションに記録する必要がある場合(チャット、リアルタイムステータスの更新など)に一般的に使用されます。 Cookieベースのセッションを使用していますか?そうであれば、最初に訪問したドメイン(トランザクションIDを設定したドメイン)とリダイレクト先のドメイン(少なくともセッションCookieが設定されているレベル)は同じですか?あなたが質問にテストコードを追加している場合は、それを修正しないでください。 –

+0

ドメインの問題でした。ありがとうございました! – HarlemSquirrel

+0

あなたは歓迎されています。答えとして追加されたので、質問は完了したものとしてマークすることができます。 –

答えて

1

Capybaras using_sessionは、あなたが求めているセッションを参照していません。これは、Capybaraによって使用されるブラウザまたはブラウザ/アプリのペアのインスタンスを指し、テスト中に2人の異なるユーザーを同時にアプリケーションに記録する必要がある場合(チャット、リアルタイムステータスの更新など)に一般的に使用されます。

Cookieベースのセッションを使用する場合は、元々訪問していた元の(サブ)ドメインと(トランザクションIDを設定した)元のドメインが同じである(少なくともセッションクッキーが設定されているレベルat)。そうでない場合、セッションCookieはリダイレクト要求に対して有効でなくなり、送信されないため、トランザクションIDは利用できなくなります。

関連する問題