Capybara:访问到一个启用Javascript的随机字符串路径



在我的Capybara测试中,当我使用visit partners_path或任何其他路径,使用js: true时,Capybara尝试访问/{random string}(这不是实际路线)。我正在为一些测试设备生成随机字符串,但没有一个与路径中的随机字符串匹配。

当JavaScript被禁用时,这个错误不会发生,我尝试过水豚webkit、selenium和poltergeist,所有这些都得到了相同的结果。

如果有帮助的话,我可以发布一些代码片段。

编辑

下面包括spec.rb和spec_helper文件。

## partners_index_spec.rb
require 'spec_helper'
RSpec.describe "Show all partners" do
  context "when logged in" do
    before(:each) do
      login_with_oauth
      create_partner_data
    end
    context "when accessing the partners index view", js: true do
      before(:each) do
        visit partners_path
      end
      scenario "..." do
        ...some tests here...
      end
    end
  end
end
## spec_helper.rb
require 'factory_girl'
require 'simplecov'
require 'capybara/rspec'
require 'capybara/poltergeist'
require 'omniauth-google-oauth2'
SimpleCov.start do
  add_filter '/spec/'
  add_filter '/config/'
end
RSpec.configure do |config|
  config.include FactoryGirl::Syntax::Methods
  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end
  config.expect_with :rspec do |c|
    c.syntax = :expect
  end
  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end
  config.filter_run :focus
  config.run_all_when_everything_filtered = true
  config.disable_monkey_patching!
  config.default_formatter = 'doc' if config.files_to_run.one?
  config.order = :random
  Kernel.srand config.seed
  config.before(:each) do
    Mongo::Logger.logger.level = ::Logger::FATAL
    $mongo ||= [ Mongo::Client.new([ "#{ENV['MONGO_HOST_1']}" ], { database: "account_services_development" }),
                 Mongo::Client.new([ "#{ENV['MONGO_HOST_1']}" ], { database: "partner_services_development" }) ]
    $mongo.each { |m| m.database.drop unless m.nil? }
  end
end
OmniAuth.config.test_mode = true
Capybara.javascript_driver = :poltergeist

发现模拟oauth登录时出错。我为谷歌oauth2期间提供的图像url生成了一个随机字符串,显示该图像的视图试图找到随机字符串的路径。更换为https://example.com,一切正常。

最新更新