我正在使用以下技术为我们的域设置通配符cookie:

cookies['root_domain_flash_warning'] = {
  'value' => 'mistakes have been made!',
  'domain' => ".#{APP_DOMAIN}",
  'expires' => 2.minutes.from_now
}

这似乎很方便。遗憾的是,除了传递给CookieJar#[] =的哈希中与'value'键相关的值之外,我似乎无法查找任何内容,因为CookieJar#[]实际上并没有返回传递给它的哈希值互惠方法。

有没有人知道在功能测试中验证域已设置cookie的方法?

有帮助吗?

解决方案

您可以检查 Set-Cookie 标头的值,该标头可以在 @ response.headers ['Set-Cookie'] 中访问。

尝试以下几点:

def test_something
  get '/my_action'
  assert_equal ["root_domain_flash_warning=mistakes+have+been+made!; domain=.mydomain.com; path=/; expires=Fri, 07-Aug-2009 11:42:21 GMT"], @response.headers['Set-Cookie']
end

不幸的是,您无法从 cookies 方法中提取这些值。在 ActionController :: Integration :: Session#process 源代码( actionpack / lib / action_controller / integration.rb )中,集成测试cookie是如下流程,只提取输入哈希的 value 部分:

(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
  name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
  @cookies[name] = value
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top