Rails 功能规范:外部 Google 字体 API 被调用,但我不知道在哪里
Rails feature specs: external Google font API is called, but I don't know where
当我 运行 我的 Rails 功能规格没有互联网连接时,测试失败,原因如下:
3) Creating user textarea fullscreen feature of "about" textarea shows the fullscreen toggler on hover
Failure/Error: visit new_user_path
Capybara::Poltergeist::StatusFailError:
Request to 'http://127.0.0.1:65001/en/users/new' failed to reach server, check DNS and/or server status - Timed out with the following resources still waiting http://fonts.googleapis.com/css?family=Fredericka+the+Great
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/browser.rb:376:in `command'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/browser.rb:35:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/driver.rb:97:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/capybara-2.12.0/lib/capybara/session.rb:252:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/capybara-2.12.0/lib/capybara/dsl.rb:52:in `block (2 levels) in <module:DSL>'
# ./spec/features/users/new_spec.rb:137:in `block (3 levels) in <top (required)>'
我怀疑这是由我引用的 google 字体引起的,但我已经在本地下载了该字体并像这样加载到我的 SASS:
@font-face
font-family: 'Fredericka the Great'
font-style: normal
font-weight: 400
src: local('Fredericka the Great'), local('FrederickatheGreat'), asset-url('assets/fredericka_the_great.woff2') format('woff2')
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215
所以我在我的代码中没有看到任何对 http://fonts.googleapis.com
的引用。在整个项目中搜索这个确切的字符串也没有给出任何结果。
我怎样才能避免这个问题?我不希望 PhantomJS 联系任何非本地资源,因为它会减慢测试速度。
如果您不想 Poltergeist/PhantomJS 访问 127.0.0.1 之外的任何资源,请使用 Poltergeist 提供的白名单功能。注册您的 :poltergeist 驱动程序时指定 :url_whitelist
选项
Capybara.register_driver(:poltergeist) do |app|
Capybara::Poltergeist::Driver.new(app, url_whitelist: ['http://127.0.0.1'])
end
我发现了问题:我的 application.css
在测试时没有正确重新编译,所以它需要一个旧版本。
完成手动操作后 $ rake assets:precompile
google 字体 api 源不再被调用。
当我 运行 我的 Rails 功能规格没有互联网连接时,测试失败,原因如下:
3) Creating user textarea fullscreen feature of "about" textarea shows the fullscreen toggler on hover
Failure/Error: visit new_user_path
Capybara::Poltergeist::StatusFailError:
Request to 'http://127.0.0.1:65001/en/users/new' failed to reach server, check DNS and/or server status - Timed out with the following resources still waiting http://fonts.googleapis.com/css?family=Fredericka+the+Great
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/browser.rb:376:in `command'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/browser.rb:35:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/poltergeist-1.13.0/lib/capybara/poltergeist/driver.rb:97:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/capybara-2.12.0/lib/capybara/session.rb:252:in `visit'
# /Users/josh/.rvm/gems/ruby-2.2.6@a4aa2/gems/capybara-2.12.0/lib/capybara/dsl.rb:52:in `block (2 levels) in <module:DSL>'
# ./spec/features/users/new_spec.rb:137:in `block (3 levels) in <top (required)>'
我怀疑这是由我引用的 google 字体引起的,但我已经在本地下载了该字体并像这样加载到我的 SASS:
@font-face
font-family: 'Fredericka the Great'
font-style: normal
font-weight: 400
src: local('Fredericka the Great'), local('FrederickatheGreat'), asset-url('assets/fredericka_the_great.woff2') format('woff2')
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215
所以我在我的代码中没有看到任何对 http://fonts.googleapis.com
的引用。在整个项目中搜索这个确切的字符串也没有给出任何结果。
我怎样才能避免这个问题?我不希望 PhantomJS 联系任何非本地资源,因为它会减慢测试速度。
如果您不想 Poltergeist/PhantomJS 访问 127.0.0.1 之外的任何资源,请使用 Poltergeist 提供的白名单功能。注册您的 :poltergeist 驱动程序时指定 :url_whitelist
选项
Capybara.register_driver(:poltergeist) do |app|
Capybara::Poltergeist::Driver.new(app, url_whitelist: ['http://127.0.0.1'])
end
我发现了问题:我的 application.css
在测试时没有正确重新编译,所以它需要一个旧版本。
完成手动操作后 $ rake assets:precompile
google 字体 api 源不再被调用。