Del*_*ine 7 rspec capybara poltergeist ruby-on-rails-4
我试图在我的Rails 4应用程序上使用Rspec/Capybara/Poltergeist进行一些测试,安装了Phantomjs(版本2.2.1),但我总是得到这个错误:
失败/错误:访问(perfect_landing_page_path)
水豚::骚灵:: StatusFailError:
请求' http://127.0.0.1:49623/path '无法访问服务器,检查DNS和/或服务器状态
我正在进行的测试:
require 'rails_helper'
RSpec.feature 'Subscription', :type => :feature do
let!(:plan) { create(:plan) }
let!(:landing_page) { create(:landing_page) }
before(:each) { landing_page.default_plan = plan }
describe 'landing_page#perfect_show' do
scenario 'form display', js: true do
plan_2 = create(:plan)
plan_3 = create(:plan)
landing_page.plans << plan_2
landing_page.plans << plan_3
visit(perfect_landing_page_path)
expect(page).to have_css(".start-now", count: 3)
first(".start-now").click
expect(page).to have_css("#new_user")
end
end
end
Run Code Online (Sandbox Code Playgroud)
我的Gemfile看起来像这样:
gem 'rspec-rails', '~> 3.0'
gem 'factory_girl_rails'
gem 'guard-rspec'
group :test do
gem 'database_cleaner'
gem 'capybara'
gem 'capybara-screenshot'
gem 'poltergeist'
gem 'selenium-webdriver'
gem 'shoulda-matchers', require: false
gem 'show_me_the_cookies'
end
Run Code Online (Sandbox Code Playgroud)
我的spec/support/capybara.rb文件:
require 'capybara/rails'
require 'capybara/rspec'
require 'capybara-screenshot/rspec'
require "capybara/poltergeist" # Add this line to require poltergeist
require 'selenium-webdriver'
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :default_max_wait_time => 30, :timeout => 30, phantomjs_options: [
'--load-images=no',
'--ignore-ssl-errors=true',
'--ssl-protocol=any']})
end
Capybara.register_driver :poltergeist_debug do |app|
Capybara::Poltergeist::Driver.new(app, :inspector => true)
end
Capybara.configure do |config|
config.javascript_driver = :poltergeist
config.ignore_hidden_elements = true
config.default_max_wait_time = 30
end
Run Code Online (Sandbox Code Playgroud)
我的spec_helper.rb文件:
require 'capybara/rspec'
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
config.filter_run :focus
config.run_all_when_everything_filtered = true
Run Code Online (Sandbox Code Playgroud)
之前有人遇到过这个问题吗?有人有解决方案吗?我几天来一直在网上喋喋不休......非常感谢你.
PS:它在我朋友的Mac(Yosemite或El Capitan)上工作得很好,就在我的朋友身上.
我遇到了同样的问题,这是由于第 3 方脚本超时造成的。您可以通过黑名单阻止加载第 3 方脚本。例如:
config.before(:each, js: true) do
page.driver.browser.url_blacklist = ["http://use.typekit.net"]
end
Run Code Online (Sandbox Code Playgroud)
http://use.typekit.net将阻止为使用 js 驱动程序的每个测试调用任何以 开头的 URL 。更多信息请访问:
https://robots.thoughtbot.com/speed-up-javascript-capybara-specs-by-blacklisting-urls
或者,您可以使用白名单:
config.before(:each, js: true) do
page.driver.browser.url_whitelist = ["127.0.0.1"]
end
Run Code Online (Sandbox Code Playgroud)
这将阻止所有不发送至 127.0.0.1 的请求
我将配置放入spec/feature_helper.rb以确保它仅针对功能规格进行设置。
| 归档时间: |
|
| 查看次数: |
3602 次 |
| 最近记录: |