2013-02-17 3 views
2

Я знаю, что на этот вопрос было ответили много раз, но существующие ответы не разрешают мою проблему.Rspec - Вы должны активировать Authlogic :: Session :: Base.controller - я уже пробовал общие предложения

Я хочу запустить мои тесты rspec для контроллеров. Мне нужно аутентифицировать пользователя через Authlogic.

Как многие из вас сказал (в других подобных вопросах), я добавил к spec_helper.rb файла:

require "authlogic/test_case" 
include Authlogic::TestCase 

и activate_authlogic в перед каждым в мой 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 

Вы видите, что к этому плохого?

Любые предложения действительно приветствуются.

Спасибо!

пс.

Версии, используемые: - рельсы 3,2 - RSpec (2.11.0) - RSpec-жильный (2.11.1)

ответ

0

После многих попыток я нашел более, что один вопросы:

  • пользователя, созданный FactoryGirl не является действительным пользователем
  • вместо «перед: каждый» иногда я пытался «раньше: все», и добавил шум моей ошибки фиксации

Извините за «не так» полезный вопрос :)

2

попробуйте использовать setup :activate_authlogic или Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self) вместо activate_authlogic, может быть, это поможет

+0

Благодаря Шамир, но он не работает. Я думаю, что первая хорошая, если вы используете модульный тест. Я пробовал Authlogic :: Session :: Base.controller = Authlogic :: ControllerAdapters :: RailsAdapter.new (self), но я получаю «undefined method' cookie_jar »для nil: NilClass». –

+0

Отладка кода, я вижу, что activate_authlogic return nil, глядя на документы Authlogic, он должен вернуть что-то не ноль. Любые другие идеи? –

3

Я не» t понять, если вы нашли решение, но вот код, который я использую для своих контроллеров Rspec. Вы можете уловить ошибку недействительного пользователя до создания сеанса!

спецификации/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 

 Смежные вопросы

  • Нет связанных вопросов^_^