加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 为什么Capybara在一次活动之后丢弃我的会话?

发布时间:2020-12-16 20:26:11 所属栏目:百科 来源:网络整理
导读:测试具有before_filter的rails应用程序:authenticate_user!对于大多数控制器,我不能让Capybara保留会话. 我有Capybara配置PhantomJS与poltergeist. 我使用以下帮助器: require 'spec_helper'include Warden::Test::Helpersmodule FeatureHelpers def logi
测试具有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请求,我只能成功访问一次规格.

我究竟做错了什么?

解决方法

所以问题是phantomjs驱动程序(poltergeist)正在使用一个单独的数据库连接.我以前有完全相同的问题,我从 railscast episode 391得到了一个解决方案,代码在spec / support / shared_db_connection.rb

由于我找不到他的代码许可证,所以我将链接到code here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读