在测试环境中找不到javascript库的图像资源

时间:2018-01-25 11:28:30

标签: ruby-on-rails rspec capybara asset-pipeline

我们在rails 5 app中使用vis.js网络库。它通过纱线安装并在资产管道(application.js)中需要:

//= require vis/dist/vis
//= require vis/dist/vis-network.min

在开发环境中一切都很好,但我们的水豚功能测试会引发错误

Rack app error handling request { GET /assets/img/network/editIcon.png }       
#<ActionController::RoutingError: No route matches [GET] "/assets/img/network/editIcon.png">

最糟糕的是,此错误并不总是出现,但py在capybara屏幕截图中永远不可见。

任何线索,为什么开发和测试环境可能会有所不同?

2 个答案:

答案 0 :(得分:0)

毕竟我为自己解决了这个问题。添加config.assets.debug = true后,我们找回了png。此处描述了此选项的效果:https://stackoverflow.com/a/20859448/2459156

答案 1 :(得分:0)

在测试模式下运行config.assets.debug = true不是一个很好的解决方案,因为这意味着您的测试环境不再与资产角度(没有连接等)匹配您的生产环境。

正确的解决方案是将指定图像资源的路径添加到Rails.application.config.assets.paths(通常在config/initializers/assets.rb中完成)