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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 为什么Capybara在一次活动之后丢弃我的会话?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
测试具有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

原文链接:https://www.f2er.com/ruby/273381.html

猜你在找的Ruby相关文章