test rails page example and ruby-on-rails rspec capybara phantomjs poltergeist

ruby on rails - rails - ¿Por qué Capybara está descartando mi sesión después de un evento?



capybara test rails (1)

Entonces, el problema era que el controlador phantomjs ( poltergeist ) estaba usando una conexión de base de datos separada. Tenía exactamente el mismo problema antes y obtuve una solución del railscasts.com/episodes/391-testing-javascript-with-phantomjs de railscasts.com/episodes/391-testing-javascript-with-phantomjs con el código en spec/support/shared_db_connection.rb

Ya que no puedo encontrar la licencia para su código, solo voy a vincularlo aquí.

Probando una aplicación de rieles que tiene before_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 un click_link en algo que realiza acciones AJAX, o si simplemente trato de visit ''/tasks'' dos veces, la afirmación should fallar porque me redireccionarán a la página de inicio de sesión de la aplicación.

He intentado algunos enfoques diferentes, incluida la configuración de Capybara::Session , pero todavía obtengo 401 códigos en las solicitudes AJAX y solo puedo visitar con éxito una vez por especificación.

¿Qué estoy haciendo mal?