我的茉莉花规格运行良好。但是当我必须使用像$
这样的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
我不明白我在这里做错了什么。
我认为我们加载文件的顺序是这里的问题。但是无法理解这一点。
答案 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取得了很大的成功!