我已经做到了:
class ActionController::TestCase
include Warden::Test::Helpers
end我的测试用例很简单:
def test_access_admin_as_superuser
login_as(Person.make(:superuser))
get :index
assert_response :success
assert_nil flash[:warning]
end我做了一个login_as(user),它似乎可以工作,除非我做了一个get '/admin',它会失败,如下所示:
1) Error:
test_access_admin_as_superuser(AdminControllerTest):
NoMethodError: undefined method `user' for nil:NilClass
/home/silas/.rubygems/gems/gems/rails_warden-0.5.2/lib/rails_warden/controller_mixin.rb:21:in `current_user'
app/controllers/application_controller.rb:100:in `require_user'
test/functional/admin_controller_test.rb:20:in `test_access_admin_as_superuser'有什么想法吗?
发布于 2013-04-07 02:32:31
Devise有帮助器来处理这个问题,如果你只是使用Warden,这是没有什么帮助的。中断的原因是动作控制器在测试环境中以不同的方式进行设置。我整理了一个小gem,它提供了一个模块,您可以在测试模式下使用rails来使用warden:github.com/ajsharp/warden-rspec-rails。
https://stackoverflow.com/questions/4557644
复制相似问题