在我的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
,一切正常。