测试适用于大多数控制器的 Rails 应用程序before_filter :authenticate_user!
,我无法让 Capybara 保留会话。
我使用 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
当我按照此处所示运行测试时,它将通过。但是,如果我在执行 AJAX 操作的某个东西上调用 a click_link
,或者我只是尝试执行visit '/tasks'
两次,则should
断言将失败,因为我将被重定向到应用程序的登录页面。
我尝试了几种不同的方法,包括设置Capybara::Session,但我仍然在 AJAX 请求中收到 401 代码,并且每个规范只能成功访问一次。
我究竟做错了什么?