【问题标题】:Rails 5 Capybara Test Routing Error public/assetsRails 5 Capybara 测试路由错误公共/资产
【发布时间】:2017-06-21 23:36:43
【问题描述】:

我的问题是我在使用 Capybara 方法save_and_open_page 进行调试时,按照此tutorial 尝试在测试环境中加载资产,但出现以下错误:

No route matches [GET] "/public/assets/application-22cc3ed14274a8cdae6670ce999946a627b5fd03c71819fbe4453118dca5ff40.css">

我在environments/test.rb 中添加了以下参数以尝试使其工作,但我仍然收到此错误。

config.assets.digest = true
config.assets.prefix = '../public/assets/'
config.assets.quiet = true
config.assets.precompile += %w( *.js *.css )
config.public_file_server.enabled = true

感谢您的帮助!

【问题讨论】:

  • 检查是否有帮助:stackoverflow.com/a/40441986/1033737
  • 我试过了,但是不行。我也尝试安装纱线,但也没有帮助。
  • Capybara 使用的是什么驱动程序?
  • 我正在使用:selenium_chrome

标签: routing capybara ruby-on-rails-5


【解决方案1】:

如果您已经在测试环境中预编译了您的资产,那么您应该能够将Capybara.asset_host 设置为您的开发人员的地址或测试实例是 - 类似于

Capybara.asset_host = 'http://127.0.0.1:3000'

这将在保存和打开页面时将其添加到文档中的基本标记中。

【讨论】:

  • 我试过这个,也没有帮助。我用config.assets.prefix = "" 尝试了这个配置,但我测试了Capybara.asset_host = 'http://127.0.0.1:3000' 的评论并且资产继续工作。你知道为什么吗?
  • 嗯?我不明白你的问题——资产继续工作是什么意思?我认为整个问题是他们没有工作?如果您的意思是正常测试运行中的资产继续工作,那是因为Capybara.asset_host 仅在保存期间影响页面——它是否在保存和打开的文档中添加了base 标记?如果是这样,您是否在打开文档时运行了您的开发实例?您是否预编译了您的测试资产?
  • 很抱歉造成混乱!我会改写自己。我尝试使用确切的配置作为问题并使用Capybara.asset_host = 'http://127.0.0.1:3000' 并没有工作。
  • @RodrigoChaves 但是它是否将base 标签添加到它保存和打开的文档中?您不需要对本教程进行任何更改,只需设置 asset_host,在运行测试之前为测试环境预编译资产,并让您的开发环境保持运行(如果在资产主机中指定端口 3000,假设您的开发env 在 3000 上运行)
【解决方案2】:

我在test.rb 中更改了此信息并开始工作:

config.assets.prefix = '../public/assets/'

config.assets.prefix = ''

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多