我无法让jasmine加载我的自定义javascript文件,即使它在浏览器中完美运行。我已经将javascript减少到最小,以避免任何错误的可能性,我仍然会在最简单的事情上得到失败的测试。
自定义ARB.js文件:
$(document).ready(function() {
alert('typeof ARB: ' + typeof ARB);
});
ARB = {};
ARB.VERSION = "V1.01.00 2012-08-24";
jasmine配置文件片段(我在Rails 3.0.9上):
src_files:
- "public/javascripts/**/*.js"
- "public/javascripts/ARB.js"
这个测试:
it('should define the custom javascript functions', function() {
expect(typeof ARB).toEqual('object');
});
失败了:
Expected 'undefined' to equal 'object'.
jQuery被加载,我的application.js文件也被加载。当运行jasmine时,我没有收到任何警告消息,但是当我运行我的应用程序时,我会这样做。
我错过了什么?
更新:如果我删除$(document).ready函数,jasmine会通过所有测试 - 那是什么意思?
答案 0 :(得分:2)
shioyama给了我指针,我需要弄明白这一点:我的自定义ARB.js文件在jquery文件之前被加载,因此它无法访问$(document).ready函数。我必须做的是明确说明我的javascript文件的加载顺序。这是我放在/spec/javascripts/support/jasmine.yml的jasmine配置文件中的内容:
src_files:
- "public/javascripts/**/jquery.js"
- "public/javascripts/**/jq*.js"
- "public/javascripts/**/application.js"
- "app/assets/javascripts/**/*.js"
- "public/javascripts/ARB.js"
我首先强制加载主jquery.js文件,然后加载所有其他jquery文件,然后是application.js,然后是属于assets目录的任何其他javascript文件,最后是我自定义的javascript文件。
这对我有用,因为我仍在使用Rails 3.0.9并开始迁移到3.1+和资产管道。