是否可以验证使用Rails集成测试设置cookie的域?
-
05-07-2019 - |
题
我正在使用以下技术为我们的域设置通配符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
不隶属于 StackOverflow