Rspec - 你必须激活Authlogic :: Session :: Base.controller - 我已经尝试过常见的建议

时间:2013-02-17 23:52:39

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

我知道这个问题已被多次回复,但现有的答案并没有解决我的问题。

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

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

require "authlogic/test_case"
include Authlogic::TestCase
my events_controller_spec.rb 中的之前的

activate_authlogic

...
  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)

3 个答案:

答案 0 :(得分:3)

我不明白您是否找到了解决方案,但这是我用于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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

经过多次尝试后,我发现了更多问题:

  • 由FactoryGirl创建的用户不是有效用户
  • 而不是“之前:每个”有时我尝试“之前:所有”,这增加了我的错误修复

抱歉“不太有用”的问题:)