Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 无法通过上次\u响应读取Rspec 3中的cookie_Ruby_Rspec_Sinatra_Rspec3 - Fatal编程技术网

Ruby 无法通过上次\u响应读取Rspec 3中的cookie

Ruby 无法通过上次\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 我知道这已经有一段时间了,但现在面临着完全相同的问题,经过一些努力,我发现了一篇文章,分享了一种有趣的方法。由于我也找不到任何本机解析的方法,这对我来说很

我试图在Rspec 3.1中读取get呼叫后收到的cookie。 我看到它已返回,但最后的\u response.cookies不存在。 如何读取响应的cookie

  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[]