Webfont路径,rspec,水豚和恶作剧者

efo*_*foo 6 poltergeist ruby-on-rails-4 rspec3

我正在将我的Capybara测试套件从capybara-webkit转换为poltergeist.

-require 'capybara/webkit'
+require 'capybara/poltergeist'

-Capybara.javascript_driver = :webkit
+Capybara.javascript_driver = :poltergeist
Run Code Online (Sandbox Code Playgroud)

在运行我的测试时,第一次测试失败并显示此消息...

Failure/Error: Unable to find matching line from backtrace
 ActionController::RoutingError:
   No route matches [GET] "/assets/fonts/glyphicons-halflings-regular.ttf"
Run Code Online (Sandbox Code Playgroud)

经过一番调查,我发现类似的问题在这里.

但是,我有一个bootstrap.css的手动安装.我按照第二个答案中的建议调整了路径,并收到了更新路径的相同消息.

经过一段时间和挫折之后,我意识到这只是我套房中的第一次测试失败,其余的都通过了.很自然地,我删除了第一个测试.现在,"新"第一次测试失败,其余测试通过.所以我把它们全部删除了.现在,他们都没有失败!测试很简单!结束.

是什么让我的第一次测试失败?为什么其余的都过去了?

更多信息请求.

nor*_*ort 0

对此有两种可能的解决方案

答:您正在加载图像,但您可能不想这样做(加快测试速度等)

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app,
    :timeout => 60,
    :phantomjs_logger => File.open(File::NULL), # silence JavaScript console.log
    :phantomjs_options => %w(--load-images=false --ignore-ssl-errors=true),
  )
end
Run Code Online (Sandbox Code Playgroud)

B. 规范失败,因为您收到 404 未找到该资产

# Gemfile
gem 'bootstrap-sass'
Run Code Online (Sandbox Code Playgroud)

然后将其包含在 JavaScript 中

# assets/javascripts/application.js
//= require bootstrap-sprockets
Run Code Online (Sandbox Code Playgroud)

然后将其包含在 CSS land 中

# assets/stylesheets/application.scss
@import "bootstrap-sprockets";
@import "bootstrap";
Run Code Online (Sandbox Code Playgroud)