Ruby 无法通过上次\u响应读取Rspec 3中的cookie
我试图在Rspec 3.1中读取get呼叫后收到的cookie。 我看到它已返回,但最后的\u response.cookies不存在。 如何读取响应的cookieRuby 无法通过上次\u响应读取Rspec 3中的cookie,ruby,rspec,sinatra,rspec3,Ruby,Rspec,Sinatra,Rspec3,我试图在Rspec 3.1中读取get呼叫后收到的cookie。 我看到它已返回,但最后的\u response.cookies不存在。 如何读取响应的cookie it "doesn't signs in" do get '/ui/pages/Home' puts last_response.cookies end 我知道这已经有一段时间了,但现在面临着完全相同的问题,经过一些努力,我发现了一篇文章,分享了一种有趣的方法。由于我也找不到任何本机解析的方法,这对我来说很
it "doesn't signs in" do
get '/ui/pages/Home'
puts last_response.cookies
end
我知道这已经有一段时间了,但现在面临着完全相同的问题,经过一些努力,我发现了一篇文章,分享了一种有趣的方法。由于我也找不到任何本机解析的方法,这对我来说很好 基本上,将下面的这段代码放在
spec/spec\u helper.rb
上:
def cookies_from_response(response=last_response)
Hash[response["Set-Cookie"].lines.map { |line|
cookie = Rack::Test::Cookie.new(line.chomp)
[cookie.name, cookie]
}]
end
您可以使用它来查看解析的散列
:
puts cookies_from_response
对于cookie的值检查,您可以使用以下内容:
# Given your cookie name is 'foo' and the content is 'bar'
expect(cookies['foo'].value).to eq 'bar'
希望这能对其他面临类似问题的人有所帮助。您能添加当前正在使用的代码以返回意外值吗?您是否签入了另一个答案?这可能会有帮助。祝你好运我需要的是响应的cookie而不是请求,我的意思是:
rack\u mock\u session.cookie\u jar
。如果在response
上设置了值,则答案如下:response.set\u cookie“foo”,:value=>“bar”
尝试了它。它有空的cookies[]