【问题标题】:Rails - disable js&css //=require for testsRails - 禁用 js&css //=测试需要
【发布时间】:2016-11-08 19:18:47
【问题描述】:

在 Rails (5) 应用程序中运行测试时,例如控制器 rspecs,您需要提供所有外部前端依赖项 - 运行这些测试需要 application.jsapplication.css 中包含的任何内容,否则当代码开始呈现响应时,您会收到 Sprockets::FileNotFound 异常。

这实际上是不需要的,因为我们没有评估生成的 HTML 或任何类似的东西,也绝对没有运行 JS,但它使这些测试依赖于 npm/bower 不会失败、需要时间下载等等等等。

所以,我希望找到一种在运行规范时不需要 js 和 css 依赖项的方法——本质上使 application.jsapplication.css 为空,以便运行规范。 (除非这不起作用,因为其他模板也可能require 的东西。)

有人做过这样的事吗?如何? :)

【问题讨论】:

  • describe 'some stuff which doesn't require js', js: false do 对你有用吗?
  • @fabersky 显然不是。例如,它看起来像访问image_path,触发 Sprockets 读取 application.js 以获取依赖项列表,并因缺少 es6-shim 而失败(因为这是第一个)

标签: javascript css ruby-on-rails rspec


【解决方案1】:

您可以通过在测试环境中包含依赖项来解决此问题,启用 Sprockets 只是 Rails 启动过程的一部分,我认为没有简单的解决方法。

【讨论】:

  • 谢谢,这实际上是我没有考虑过的。依赖项列表是相对静态的,因此将它们创建为空文件并使用它可能很容易:)。 (也就是说,我不愿意将此标记为已接受的答案,对不起,仍然希望有一些更清洁的东西:))
【解决方案2】:

最终通过在测试环境中解决这个问题。

class << ActionController::Base.helpers def image_path(path, options = {}) path end end

事实证明,不使用图像路径(可能还有其他相关的帮助程序,YMMV)不会触发查找。

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 2019-05-10
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多