Rails 4.1中jasmine-jquery无法加载

3

我最近升级到了Rails 4.1。

我正在使用gem 'jasmine-rails',这个gem单独使用很好。

我也尝试着使用gem 'jasmine-jquery-rails'来加载fixtures,但是无法加载它(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。
有什么想法?
3个回答

1
你只需要以下内容。
在jasmine.yml文件中,只需要有以下内容即可:
spec_files:
  - "**/*[Ss]pec.{js.coffee,js,coffee}"

然后在规范文件中,您需要包含用于测试的文件(这些文件位于资产管道中,因此您只需要包含即可。这就是 jasmine-rails 宝石的作用)。

也许这个例子可以帮助:

//= 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资产文件都在资产管道中,因此在您的测试文件中,只需要包含您需要的内容来进行测试。
祝您编写愉快!

但是如果我不想在每个规范文件中都写它呢? - faron

0

尝试添加:

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

将以下代码添加到您的spec/javascripts/spec_helper.coffee文件中。
希望对您有所帮助, Jarra

0

@Elyasin提供了一个可行的解决方案,除此之外,你还需要在每个js spec文件中要求jasmine-jquery。将//= require jasmine-jquery添加到app/assets/javascripts/application.js中。然后你就不必在其他任何地方再次要求它了。这对我很有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接