RSpec测试在Rails和304 HTTP状态码



使用design进行身份验证。在包含:

的控制器上
before_filter authenticate_user!, :except => [ :index, :show ]

我总是得到304 Not Modified状态码,而不是200 OK上的身份验证的行动,即使在浏览器中,而登录。视图渲染和工作都很好。

它正在阻止我的测试通过:

describe 'GET index' do
  it 'should be successful' do
    get 'index'
    response.should be_success  # Fails due to 304 status code
  end
end

一开始我以为是控制器的问题,但除了before_filterdecent_exposure,控制器不能再常见了。

这个问题的根源可能是什么?

304是一件好事。在这种情况下,它是预期的(和期望的),即使它可能给您的一些测试带来麻烦。304意味着你的web服务器和客户端正在以一种允许缓存web服务器响应的方式进行通信。

我不完全熟悉Rails,但我怀疑有一个内置的机制来缓存你的响应。这是一篇关于缓存的Rails文章:
http://guides.rubyonrails.org/caching_with_rails.html

这里是什么看起来像一个方法来禁用缓存控制器/动作级别(忽略关于iframes的部分…这也可能不是最好的方式):
http://arjunghosh.wordpress.com/2008/04/29/how-to-force-the-browser-to-not-cache-in-rails/

测试失败,因为我正在使用可确认模块的设计进行身份验证,而没有使用已确认的用户。

在出厂设置confirmed_at属性后,所有测试通过。

相关内容

  • 没有找到相关文章

最新更新