使用Warden进行功能测试?

时间:2010-12-29 20:34:44

标签: ruby-on-rails authentication devise warden

我正在尝试进行功能测试,需要使用Warden登录。

我做了:

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'

任何想法?

1 个答案:

答案 0 :(得分:0)

Devise有助手来解决这个问题,如果你只是使用Warden,这对你没什么帮助。事情破裂的原因是因为动作控制器以不同的方式在测试环境中设置。我整理了一个小宝石,它提供了一个模块,您可以在测试模式下使用导轨处理带有导轨的模块:github.com/ajsharp/warden-rspec-rails