Почему Капибара отказывается от моей сессии после одного события?
Тестирование приложения рельсов, которое имеетbefore_filter :authenticate_user!
для большинства контроллеров я не могу заставить Капибару сохранить сеанс.
Я настроил Capybara используя PhantomJS с poltergeist.
Я использую следующий помощник:
require 'spec_helper'
include Warden::Test::Helpers
module FeatureHelpers
def login(user = FactoryGirl.create(:default_user))
login_as user, scope: :user
user
end
end
У меня есть следующий файл спецификации:
require 'spec_helper'
include Warden::Test::Helpers
feature 'Leads Data Tasks View' do
before(:each) do
@user = login
end
after{ Warden.test_reset! }
context "clicking a task button" do
scenario "login persists across multuple actions", js: true do
visit '/tasks'
page.should have_selector('#parse', count: 1)
end
end
end
Когда я запускаю тест, как показано здесь, он пройдет. Тем не менее, если я призываюclick_link
на то, что выполняет действия AJAX, или если я просто пытаюсь сделатьvisit '/tasks'
дваждыshould
утверждение не удастся, потому что я буду перенаправлен на страницу входа в приложение.
Я пробовал несколько разных подходов, включая настройкуКапибара :: Session, но я все еще получаю 401 код на запросы AJAX, и я могу только успешно посетить один раз по спецификации.
Что я делаю неправильно?