我有一个资源,其中新操作需要用户登录才能查看。如果用户尝试在未登录的情况下创建新资源,则会将其重定向(302'd)到登录页面。我的功能测试是这样的:在功能性Rails测试中为authenticate_user引发warden错误
test "should not get new unless logged in" do
get :new
assert_response :redirect
end
堆栈跟踪看起来是这样的:
ArgumentError: uncaught throw :warden
/.../gems/warden-1.1.1/lib/warden/proxy.rb:114:in `throw'
/.../gems/ruby-1.9.2-p318/gems/warden-1.1.1/lib/warden/proxy.rb:114:in `authenticate!'
/.../gems/ruby-1.9.2-p318/gems/devise-2.0.4/lib/devise/controllers/helpers.rb:48:in `authenticate_user!'
我有一个的before_filter新的行动之前与authenticate_user。
我明白了为什么authenticate_user!是失败的,但我不明白为什么它抛出一个错误。它不应该像它在webapp中那样行事。将用户重定向到登录页面?
谢谢。
你有没有找到一种方法来测试在用户未登录的情况下?我有类似的问题。 –
我不知道我是怎么最终得到了这个工作,但它可能会下降到加入“包括设计:: TestHelpers”来测试类。随意添加一个pastebin与你的代码,我会尝试看看。 – Ger
在我的情况下,这原来是特征声明(我不需要,并在某种程度上导致此错误)'js:true' – xxjjnn