Dlaczego Capybara odrzuca moją sesję po jednym wydarzeniu?
Testowanie aplikacji szyny, która mabefore_filter :authenticate_user!
dla większości kontrolerów nie mogę nakłonić Kapibary do zachowania sesji.
Mam skonfigurowaną kapibarę przy użyciu PhantomJS z poltergeist.
Używam następującego pomocnika:
require 'spec_helper'
include Warden::Test::Helpers
module FeatureHelpers
def login(user = FactoryGirl.create(:default_user))
login_as user, scope: :user
user
end
end
Mam następujący plik specyfikacji:
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
Kiedy uruchomię test, jak pokazano tutaj, przejdzie. Jeśli jednak odwołam się do aclick_link
na czymś, co wykonuje akcje AJAX lub po prostu próbuję to zrobićvisit '/tasks'
dwa razyshould
asercja zakończy się niepowodzeniem, ponieważ zostanie przekierowany do strony logowania aplikacji.
Wypróbowałem kilka różnych podejść, w tym konfigurację aCapybara :: Sesja, ale wciąż otrzymuję kody 401 na żądania AJAX i mogę tylko pomyślnie odwiedzić tylko raz na specyfikację.
Co ja robię źle?