1

セッションを使用しようとしていますが、奇妙な結果が得られます。

次の RSpec コードは、2 つの別個のセッションを生成しているようです。

visit start_path
post session_path, { foo: "bar" }

start_path コントローラーによって呼び出されるメソッドでは、次のようになります。

session[:started] = 'yes' puts "開始: #{session.inspect}"

セッションコントローラーで:

def create
  session[:foo] = params[:foo]
  head :created
  puts "Sessions controller: #{session.inspect}"
end

出力は次のようになります。

Start: {"session_id"=>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ...
Sessions controller: {"session_id"=>"yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy" ...

セッション ID が異なります。

これは、RSpec が 2 つのセッションを作成している、post 呼び出しが別のセッションを作成している、またはアプリがセッションを分離するために何かを行っているためですか?

2 つのセッションが作成されるのはなぜですか?

別の名前に変更しようとしcreateましたが、違いはありませんでした。

クッキーストアの使用。

4

2 に答える 2

0

Stack Overflowのおかげで、ここで解決策を見つけました:Rails-統合テストとCapybaraとのセッションの喪失-CSRF関連?

問題は、カピバラが独自のセッションを持っていることです。

page.driver.postの代わりに使用する必要がありpostます!

于 2012-07-31T11:23:29.990 に答える