我能够使用Devise的sign_in方法在我的控制器规范中登录用户.但是现在我正在从我的应用程序中删除Devise,我不太确定如何使用Warden自己的类似功能.
我应该如何设置spec/spec_helper.rb和相关spec/support/*.rb文件以使Warden在控制器规格内充分运行?
我已尝试spec/support/warden.rb使用以下内容设置文件:
RSpec.configure do |config|
config.include Warden::Test::Helpers
config.after do
Warden.test_reset!
end
end
Run Code Online (Sandbox Code Playgroud)
然后我有before类似的调用来验证user工厂:
before { login_as FactoryGirl.create(:user) }
Run Code Online (Sandbox Code Playgroud)
但这是我一直看到的错误:
NameError:
undefined method `user' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
此错误追溯到authenticate_user!控制器中的方法:
def authenticate_user!
redirect_to login_path, notice: "You need to sign in or sign up before continuing." if env['warden'].user.nil?
end
Run Code Online (Sandbox Code Playgroud)
我很感激任何人都可以提供的任何指导.