【问题标题】:rails 4.1 jasmine-jquery not loadingrails 4.1 jasmine-jquery 未加载
【发布时间】:2014-05-24 09:44:39
【问题描述】:

我最近升级到 Rails 4.1

我正在使用 gem 'jasmine-rails',它本身就可以正常工作。

我也在尝试使用 gem 'jasmine-jquery-rails' 来加载固定装置,但无法加载它(jasmine 根本无法识别 jasmine-jquery 函数)。我在我的 jasmine yml 文件中添加了“jasmine-jquery.js”。

我还尝试将文件直接添加到我的 app/javascripts/assets 文件夹中,并将 jasmine.yml 文件更改为

src_dir: "app/assets/javascripts"
src_files:
  - "application.{js.coffee,js,coffee}"
  - "jasmine-jquery.js"

但它仍然不会加载 jasmine-jquery。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails jasmine jasmine-jquery


    【解决方案1】:

    您只需要以下内容。

    在 jasmine.yml 文件中只要有:

    spec_files:
      - "**/*[Ss]pec.{js.coffee,js,coffee}"
    

    然后,您需要在规范文件中包含测试所需的文件(这些文件在资产管道中,因此您只需包含它。这就是 jasmine-rails gems 的用途)。

    也许这个例子可能会有所帮助:

    //= require jquery
    //= require jasmine-jquery
    describe("Jasmine jQuery Test", function() {
      it("works out of the box", function() {
        expect($('<input type="checkbox" checked="checked"/>')).toBeChecked();
      });
    });
    

    请注意,您需要用于测试的文件。在这种情况下 jquery 和 jasmine-jquery。

    jquery 是必需的,因为 jasmine-jquery 使用它的功能(如 GitHub 上的文档中所述),而 jasmine-jquery 是必需的,因为我们使用匹配器“toBeChecked()”。

    这样想,您的所有 Rails 资产文件都在资产管道中,因此您只需在测试文件中包含测试所需的内容。

    愉快的编码

    【讨论】:

    • 但是如果我不想在每个规范文件中都写呢?
    【解决方案2】:

    尝试添加:

    #= require jquery
    #= require support/jasmine-jquery-1.7.0
    

    到您的spec/javascripts/spec_helper.coffee 文件。

    HTH, 贾拉

    【讨论】:

      【解决方案3】:

      @Elyasin 提供了一个可行的解决方案,但您必须在每个 js 规范文件中都需要 jasmine-jquery。将//= require jasmine-jquery 添加到app/assets/javascripts/application.js。然后,您不必在其他任何地方再次要求它。它对我很有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-24
        • 2015-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多