【问题标题】:Rspec - You must activate the Authlogic::Session::Base.controller - I've already tried the common suggestionsRspec - 你必须激活 Authlogic::Session::Base.controller - 我已经尝试了常见的建议
【发布时间】:2013-02-17 23:52:38
【问题描述】:

我知道这个问题已经回答了很多次,但现有的答案并不能解决我的问题。

我想为控制器运行我的 rspec 测试。我需要通过 Authlogic 对用户进行身份验证。

正如你们中的许多人所说(在其他类似问题中),我添加到 spec_helper.rb 文件中:

require "authlogic/test_case"
include Authlogic::TestCase

activate_authlogicmy events_controller_spec.rb 之前的每个:

...
  before :each do
    activate_authlogic
    user = FactoryGirl.create(:user)
    UserSession.create(user)
  end
...

但运行 rspec,我总是收到臭名昭著的错误消息:

Failure/Error: UserSession.create(user)
     Authlogic::Session::Activation::NotActivatedError:
       You must activate the Authlogic::Session::Base.controller with a controller object before creating objects

你能看出它有什么问题吗?

非常欢迎任何建议。

谢谢!

ps.

使用的版本: - 导轨 3.2 - rspec (2.11.0) - rspec-core (2.11.1)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 testing rspec authlogic


    【解决方案1】:

    尝试使用setup :activate_authlogicAuthlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self) 而不是activate_authlogic,也许会有所帮助

    【讨论】:

    • 感谢 Shamir,但它不起作用。如果您使用单元测试,我认为第一个很好。我试过 Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self),但我得到“nil:NilClass 的未定义方法 `cookie_jar'”。
    • 调试代码,我看到 activate_authlogic 返回 nil,查看 Authlogic 文档它应该返回一些不为零的东西。还有其他想法吗?
    【解决方案2】:

    我不明白您是否找到了解决方案,但这是我用于 Rspec 控制器的代码。您可以在会话创建之前捕获无效用户的错误!

    spec/spec_helper.rb

    def log_in(user)
      user.should_not be_nil
      session = UserSession.create!(user, false)
      session.should be_valid
      session.save
    end
    

    规格/控制器/...

    require 'spec_helper'
    require 'authlogic/test_case'
    
    describe xxxController do
      setup :activate_authlogic
    
      context "user logged" do
        before(:each) do
          @user = Factory(:user)
          log_in(@user)
        end
      end
    end
    

    【讨论】:

      【解决方案3】:

      经过多次尝试,我发现不止一个问题:

      • FactoryGirl 创建的用户不是有效用户
      • 有时我尝试使用“before :all”而不是“before :each”,这给我的错误修复增加了噪音

      对不起,“没那么有用”的问题:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-30
        • 2011-09-13
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 2015-10-24
        • 2017-08-22
        • 2023-03-29
        相关资源
        最近更新 更多