met*_*kat 7 cookies integration-testing ruby-on-rails ruby-on-rails-3
我有基于cookie内容更改的一般应用程序行为,需要测试它.例如,如果用户没有cookie集,表明他们已经接受了网站的法律条款,则需要将他们重定向到T&C页面.
我可以使用功能测试设置cookie
request.cookies["legal_accepted"] = "yes"
Run Code Online (Sandbox Code Playgroud)
但是,这在集成测试中不起作用 - 没有请求对象可以使用.我一直无法找到任何文档,说明为什么会这样,还有什么不同,以及处理差异的最佳实践.如何为给定的请求设置cookie?是什么原因以及随后记录在哪里?
对于 Rails 5 集成测试,metkat 的答案应该稍微改变一下:
get "/", headers: {"HTTP_COOKIE" => "legal_accepted=yes; cookie2=value2;"}
Run Code Online (Sandbox Code Playgroud)
我发现这样做的唯一方法是在请求中手动设置cookie头,例如
get "/", {}, { "HTTP_COOKIE" => "legal_accepted=yes; cookie2=value2; "}
Run Code Online (Sandbox Code Playgroud)
在Rails 3.2.x(一定是在3.2.16中)中,您可以在集成测试中直接分配cookie:
cookies['foo'] = 'bar'
Run Code Online (Sandbox Code Playgroud)
现在,您可以在测试和应用程序中访问cookie'foo':
puts cookies['foo'] (returns 'bar')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3040 次 |
最近记录: |