10

rspec 2 と rails 3 を使用して、GET リクエストを実行するときに Cookie を渡そうとしています。

これまでに次のことを試しました。

get "/", {}, {"Cookie" => "uuid=10"} # cookies[:uuid] is nil
request.cookies[:uuid] = 10 # request is nil
@request.env["Cookie"] = "uuid=10" # @request is nil
helper.request.cookies[:uuid] # helper is not defined
cookies[:uuid] = 10 # cookies[:uuid] is nil
controller.cookies[:uuid] = 10 # cookies is nil

出来ますか?

4

5 に答える 5

7

この回答に従ってcookies、リクエスト仕様内でメソッドを使用できます。

before { cookies['foo'] = 'bar' }

を含む @phoet のソリューションを試してみましActionDispatch::Request.any_instance.stubsたが、RSpec 3.4 では一見関係のない非推奨メッセージとともにエラーがスローされます。

于 2016-06-15T13:47:58.930 に答える
3

私は同様の問題を抱えていましたが、これに対する適切な解決策が見つかりませんでした。

rspec-rails docsは、それが可能であるべきだと述べています:

# spec
request.cookies['foo'] = 'bar'
get :some_action
response.cookies['foo'].should eq('modified bar')

私の仕様requestでは、常にnilgetを実行する前です。

私は今、クッキーを嘲笑しています:

before { ActionDispatch::Request.any_instance.stubs(cookies: {locale: :en}) }

この男も同様の問題を抱えています。

于 2012-09-04T06:36:11.333 に答える