使用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_filter
和decent_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
属性后,所有测试通过。