测试具有before_filter的rails应用程序:authenticate_user!对于大多数控制器,我不能让Capybara保留会话.
我有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
我有以下spec文件:
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
当我在这里显示测试时,会通过.但是,如果我在执行AJAX操作的某个事件上调用了一个click_link,或者如果我只是尝试访问“/ tasks”两次,那么断言将会失败,因为我会被重定向到该应用的登录页面.
我尝试了一些不同的方法,包括设置一个Capybara::Session,但我仍然得到401代码的AJAX请求,我只能成功访问一次规格.
我究竟做错了什么?