为什么Capybara在一次活动结束后会丢弃我的会议?[英] Why is Capybara discarding my session after one event?

问题描述

测试对大多数控制器具有before_filter :authenticate_user!的导轨应用程序,我无法让Capybara保留会话.

我已经使用带有poltergeist的phantomjs配置Capybara.

我使用以下助手:

require 'spec_helper'
include Warden::Test::Helpers

module FeatureHelpers
  def login(user = FactoryGirl.create(:default_user))
    login_as user, scope: :user
    user
  end
end

我有以下规格文件:

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操作的事情上调用A click_link,或者如果我只是尝试进行visit '/tasks'两次,则should断言将失败,因为我会重定向到应用程序的登录页面./p>

我已经尝试了几种不同的方法,包括设置 capybara "> capybara "> capybara :: session ,但我仍然可以在AJAX请求上获得401个代码,并且我只能成功访问一次.

我在做什么错?

推荐答案

因此,问题在于phantomjs驱动程序(poltergeist)正在使用分离的数据库连接.我之前遇到了完全相同的问题,我从 railscast第391集带有代码,并带有代码, spec/support/shared_db_connection.rb

由于我找不到他的代码许可证,所以我只会链接到代码在这里

本文地址:https://www.itbaoku.cn/post/1739887.html