gpt4 book ai didi

ruby-on-rails - 为什么 Capybara 在一个事件后放弃我的 session ?

转载 作者:行者123 更新时间:2023-12-03 12:45:28 24 4
gpt4 key购买 nike

测试具有 before_filter :authenticate_user! 的 rails 应用程序对于大多数 Controller ,我无法让 Capybara 保留 session 。

我使用 PhantomJS 和 poltergeist 配置了 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

当我按照此处所示运行测试时,它将通过。但是,如果我调用 click_link在执行 AJAX 操作的东西上,或者如果我只是尝试做 visit '/tasks'两次, should断言将失败,因为我将被重定向到应用程序的登录页面。

我尝试了几种不同的方法,包括设置 Capybara::Session ,但我仍然在 AJAX 请求中收到 401 代码,并且每个规范只能成功访问一次。

我究竟做错了什么?

最佳答案

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

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

关于ruby-on-rails - 为什么 Capybara 在一个事件后放弃我的 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623661/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com