2014-08-27 3 views
1

У меня есть приложение Rails, которое автоматически перенаправляется с домашней страницы на страницу входа в систему, если ни один пользователь не вошел в систему. Я использую Authlogic для проверки подлинности, Cucumber и Capybara для тестирования.Активация активации в огурце

У меня есть следующий сценарий:

Scenario: Start application 
    Given I am not logged in 
    When I go to the application web page 
    Then I should see a login form 

С помощью следующих этапов испытания:

Given(/^I am not logged in$/) do 
end 


When(/^I go to the application web page$/) do 
    visit root_path 
end 

(Then I should see a login form является немного сложным, потому что это безразличный, но я не получаю, что далеко так это вероятно, не имеет значения).

После руководство http://laserlemon.com/blog/2011/05/20/make-authlogic-and-cucumber-play-nice/ я создал файл, содержащий features\support\authlogic,rb:

require 'authlogic/test_case' 

World(Authlogic::TestCase) 

ApplicationController.skip_before_filter :activate_authlogic 

Before do 
    activate_authlogic 
end 

, но когда я бегу Огурцы, visit root_path терпит неудачу с Authlogic::Session::Activation::NotActivatedError: You must activate the Authlogic::Session::Base.controller with a controller object before creating objects

Что я делаю неправильно?

+0

Какой драйвер capybara вы используете - используемый по умолчанию тестовый драйвер Rack :: Test или Javascript? –

+0

Предположительно, по умолчанию, потому что я не знаю, что сделал что-нибудь, чтобы изменить его. – digitig

+0

Не проблема с драйверами, поддерживающими Javascript, о которых я тогда думал. Хммм. –

ответ

0

Я использовал точно такой же код с rails3, и сегодня я обнаружил точно такую ​​же ошибку Authlogic::Session::Activation::NotActivatedError: You must activate the Authlogic::Session::Base.controller with a controller object before creating objects, когда я попытался запустить мои тесты огурца с помощью rails4.

Что помогло мне было удалить линии World(Authlogic::TestCase) и ApplicationController.skip_before_filter :activate_authlogic и держать это только в support/authlogic.rb:

require "authlogic/test_case" 

Before do 
    activate_authlogic 
end 

Найдено это решение here. Пока это работает, я проверю позже, если есть какие-либо побочные эффекты.

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