ruby-on-rails - 如何测试Rails的ETag缓存?

标签 ruby-on-rails rspec etag

是否可以覆盖我的 Controller ,该 Controller 在单元测试中对Etags的依赖程度很高?

这是我想做的事情:
如果页面不是陈旧的(意味着它是新鲜的),我在响应中添加一些 header 。

当我尝试测试所有内容(rspec)时,无论我有多少类似的请求,我仍然会收到200 OK而不是304,并且我的 header 没有被修改。此外,如果我跟踪request.fresh?(响应),则始终为false。

但是,它完全可以在浏览器中工作。
我已经尝试声明ActionController::Base.perform_caching = true,它不会改变总体情况。

谢谢

最佳答案

这是测试第二个请求是否返回304响应的方法:

    get action, params
    assert_response 200, @response.body
    etag = @response.headers["ETag"]
    @request.env["HTTP_IF_NONE_MATCH"] = etag
    get action, params
    assert_response 304, @response.body

关于ruby-on-rails - 如何测试Rails的ETag缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644354/

相关文章:

http - 如何防止返回 304 的请求

ruby-on-rails - Redmine和IronRuby(Windows)?

ruby-on-rails - 使用carrierwave和uploadify时上传错误

ruby-on-rails - Ruby on Rails 与 sql server

ruby - rspec 测试 ruby​​ 脚本

http - http 响应中没有 Cache-Control header 的 ETag

angularjs - 带有wildfly的js和css文件的浏览器缓存到期

javascript - Ember 数据 RestAdapter 嵌入了 hasMany

ruby - Cucumber/Capybara - 使用具有 "Page Object"模式的 RSpec 匹配器

rspec - 为什么在每个规范都成功时一系列规范会失败?