jasmine-gem无法正确加载jquery

时间:2017-11-13 17:52:27

标签: jquery ruby-on-rails jasmine

我的茉莉花规格运行良好。但是当我必须使用像$这样的jquery语法时,我会收到以下错误:

ReferenceError: Can't find variable: $ in http://localhost:57132/__spec__/

所以,我添加了gem "jasmine-jquery-rails"

bundle install之后仍然出现同样的错误。

现在我决定在jasmine.yml文件中添加jasmine-jquery,但仍然是同样的错误。

然后我决定手动下载jasmine-jquery.js并将其放在app/assets/javascripts上,然后将其添加到jasmine.yml。然后我得到所有规格的错误。

TypeError: Right-hand side of 'instanceof' is not an object

TypeError: $ is not a function

我不明白我在这里做错了什么。

我认为我们加载文件的顺序是这里的问题。但是无法理解这一点。

1 个答案:

答案 0 :(得分:1)

我昨天刚开始使用茉莉花宝石,但在与它斗争了一段时间之后,我让它为我工作。

你需要的是让JQuery注册$ handler。只是将JQuery库添加到src_files中的yasmine.yml似乎没有帮助。

DID对我有用的是将assets/application.js包含在jasmine.yml中作为src_files下的第一个条目

src_files:
  - assets/application.js
  - '../vendor/javascripts/*.js'
  - 'javascript/**/*.js'

(我在javascript/文件夹中获取了我的实际源文件,并将..vender/javascripts/文件夹用于第三方库,这对您来说会有所不同。)

确保assets/javascripts/application.js中需要JQuery,如下所示:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

这几乎是assets/javascripts/application.js在通过rails new命令行工具生成新应用程序时的样子。

jasmine-jquery-rails gem对您的问题没有帮助,因为它增加了额外的测试功能,而不是基本的JQuery支持。

设置Jasmine取得了很大的成功!