Ruby on rails 是否可以验证为使用Rails集成测试设置了cookie的域?

Ruby on rails 是否可以验证为使用Rails集成测试设置了cookie的域?,ruby-on-rails,testing,cookies,dns,subdomain,Ruby On Rails,Testing,Cookies,Dns,Subdomain,我正在使用以下技术为我们的域设置通配符cookie: cookies['root_domain_flash_warning'] = { 'value' => 'mistakes have been made!', 'domain' => ".#{APP_DOMAIN}", 'expires' => 2.minutes.from_now } 这似乎很方便。不幸的是,在传递给CookieJar#[]的散列中,除了与“value”键相关联的值之外,我似乎什么都查不到,因

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

cookies['root_domain_flash_warning'] = {
  'value' => 'mistakes have been made!',
  'domain' => ".#{APP_DOMAIN}",
  'expires' => 2.minutes.from_now
}
这似乎很方便。不幸的是,在传递给CookieJar#[]的散列中,除了与“value”键相关联的值之外,我似乎什么都查不到,因为CookieJar#[]实际上并没有返回传递给其对等方法的选项散列


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

您可以检查
设置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#进程
source(
actionpack/lib/action\u controller/Integration.rb
)中,集成测试cookie是如下进程,它只提取输入哈希的
部分:

(@headers['Set-Cookie'] || "").split("\n").each do |cookie|
  name, value = cookie.match(/^([^=]*)=([^;]*);/)[1,2]
  @cookies[name] = value
end