Warum verwirft Capybara meine Sitzung nach einem Ereignis?
Testen einer Schienenanwendung, die hatbefore_filter :authenticate_user!
Bei den meisten Controllern kann ich Capybara nicht dazu bringen, eine Sitzung beizubehalten.
Ich habe Capybara mit PhantomJS mit Poltergeist konfiguriert.
Ich benutze folgenden Helfer:
require 'spec_helper'
include Warden::Test::Helpers
module FeatureHelpers
def login(user = FactoryGirl.create(:default_user))
login_as user, scope: :user
user
end
end
Ich habe die folgende Spezifikationsdatei:
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
Wenn ich den Test wie hier gezeigt durchführe, wird er bestanden. Wenn ich jedoch aclick_link
auf etwas, das AJAX-Aktionen ausführt, oder wenn ich es einfach versuchevisit '/tasks'
zweimal dieshould
Die Bestätigung schlägt fehl, da ich zur Anmeldeseite der App weitergeleitet werde.
Ich habe ein paar verschiedene Ansätze ausprobiert, darunter das Einrichten einesCapybara :: Sitzung, aber ich erhalte immer noch 401 Codes für AJAX-Anfragen und kann nur einmal pro Spezifikation erfolgreich besuchen.
Was mache ich falsch?