我的茉莉花规格运行正常。但是当我必须使用像$
这样的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
我不明白我在做错了什么。
我认为我们加载文件的顺序是这里的问题。但是无法弄明白这一点。
我昨天刚开始使用茉莉花宝石,但经过一段时间的战斗后,我让它为我工作。
你需要的是让JQuery注册$ handler。只是将jQuery库添加到src_files
中的yasmine.yml
似乎没有帮助。
DID对我有用的是在jasmine.yml中包含assets/application.js
作为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成功的成功!