¿Por qué Capybara está descartando mi sesión después de un evento?
Probando una aplicación de rieles que tienebefore_filter :authenticate_user!
Para la mayoría de los controladores, no puedo hacer que Capybara conserve una sesión.
He configurado Capybara utilizando PhantomJS con poltergeist.
Yo uso el siguiente ayudante:
require 'spec_helper'
include Warden::Test::Helpers
module FeatureHelpers
def login(user = FactoryGirl.create(:default_user))
login_as user, scope: :user
user
end
end
Tengo el siguiente archivo de especificaciones:
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
Cuando ejecute la prueba como se muestra aquí, pasará. Sin embargo, si invoco unclick_link
en algo que realiza acciones AJAX, o si simplemente trato de hacervisit '/tasks'
dos veces, elshould
la afirmación fallará porque me redireccionarán a la página de inicio de sesión de la aplicación.
He intentado algunos enfoques diferentes, incluyendo la creación de unCapibara :: Sesión, pero aún obtengo 401 códigos en las solicitudes de AJAX y solo puedo visitar una vez por especificación.
¿Qué estoy haciendo mal?