微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/ruby/273381.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐