我在学习如何在Rails中完成单元测试,并且遇到了涉及Authlogic的问题。Authlogic和Rails中的单元/功能测试问题
按照Documentation有使用Authlogic东西在你的测试需要几件事情:
test_helper.rb中:
require "authlogic/test_case"
class ActiveSupport::TestCase
setup :activate_authlogic
end
然后在我的功能测试,我可以登录的用户:
UserSession.create(users(:tester))
这个问题似乎源于test_helper.rb中的setup :activate_authlogic
行,只要包含它,runni时会出现以下错误NG功能测试:
NoMethodError: undefined method `request=' for nil:NilClass
authlogic (2.1.3) lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `send'
authlogic (2.1.3) lib/authlogic/controller_adapters/abstract_adapter.rb:63:in `method_missing'
如果我删除setup :activate_authlogic
并添加代替Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
到test_helper.rb中,我的功能测试似乎工作,但现在我的单元测试失败:
NoMethodError: undefined method `params' for ActiveSupport::TestCase:Class
authlogic (2.1.3) lib/authlogic/controller_adapters/abstract_adapter.rb:30:in `params'
authlogic (2.1.3) lib/authlogic/session/params.rb:96:in `params_credentials'
authlogic (2.1.3) lib/authlogic/session/params.rb:72:in `params_enabled?'
authlogic (2.1.3) lib/authlogic/session/params.rb:66:in `persist_by_params'
authlogic (2.1.3) lib/authlogic/session/callbacks.rb:79:in `persist'
authlogic (2.1.3) lib/authlogic/session/persistence.rb:55:in `persisting?'
authlogic (2.1.3) lib/authlogic/session/persistence.rb:39:in `find'
authlogic (2.1.3) lib/authlogic/acts_as_authentic/session_maintenance.rb:96:in `get_session_information'
authlogic (2.1.3) lib/authlogic/acts_as_authentic/session_maintenance.rb:95:in `each'
authlogic (2.1.3) lib/authlogic/acts_as_authentic/session_maintenance.rb:95:in `get_session_information'
/test/unit/user_test.rb:23:in `test_should_save_user_with_email_password_and_confirmation'
我在做什么错?
我也不得不要求'authlogic/test_case',但是我的设置可能有些不可思议。 – AndrewO 2011-03-16 05:58:43