作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 rspec 中设置 cookie 有很多困惑
http://relishapp.com/rspec/rspec-rails/v/2-6/dir/controller-specs/file/cookies
在你的 Controller 中,通常你可以写
cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
request.cookies['transaction_code'] = transaction_code
request.cookies['transaction_code'] = { :expires => 300.seconds.from_now, :value => c }
最佳答案
浏览器 do not send cookie attributes back to the server .这就是为什么您只能将键值对发送到操作。
由于您可以假设 Rails、Rack 和浏览器使用参数做正确的事情,因此您真正需要测试的是您的代码传递给 CookieJar
的参数。 .
要测试在设置 cookie 的 Controller 中是否正确设置了到期时间,您可以删除 #cookies
方法并确保将正确的设置传递给它。
# app/controllers/widget_controller.rb
...
def index
cookies[:expiring_cookie] = { :value => 'All that we see or seem...',
:expires => 1.hour.from_now }
end
...
# spec/controllers/widget_controller_spec.rb
...
it "sets the cookie" do
get :index
response.cookies['expiring_cookie'].should eq('All that we see or seem...')
# is but a dream within a dream.
# - Edgar Allan Poe
end
it "sets the cookie expiration" do
stub_cookie_jar = HashWithIndifferentAccess.new
controller.stub(:cookies) { stub_cookie_jar }
get :index
expiring_cookie = stub_cookie_jar['expiring_cookie']
expiring_cookie[:expires].to_i.should be_within(1).of(1.hour.from_now.to_i)
end
...
关于ruby-on-rails-3 - 我如何在 rails rspec 中测试 cookie 的过期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492659/
我是一名优秀的程序员,十分优秀!