无法通过last_response读取Rspec 3中的cookie

时间:2015-03-15 14:47:16

标签: ruby rspec sinatra rspec3

我试图在Rspec 3.1中读取一个接到电话后收到的cookie。 我看到它被返回但是last_response.cookies不存在。 我怎样才能阅读回复的cookie?

  it "doesn't signs in" do
    get '/ui/pages/Home'
    puts last_response.cookies
  end

1 个答案:

答案 0 :(得分:0)

我知道它已经有一段时间了,但现在面对同样的问题,经过一番努力,我发现了一篇文章here,它有一个有趣的方法。由于我也无法找到任何原生解析方法,这对我来说很好。

基本上,将以下代码放在spec/spec_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

您可以使用它来查看已解析的hash

puts cookies_from_response

对于Cookie的价值检查,您可以使用以下内容:

# Given your cookie name is 'foo' and the content is 'bar'
expect(cookies['foo'].value).to eq 'bar'

希望这对面临类似问题的其他人有所帮助。