茉莉花没有加载我的自定义js文件

时间:2012-08-25 23:11:13

标签: ruby-on-rails jasmine

我无法让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会通过所有测试 - 那是什么意思?

1 个答案:

答案 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+和资产管道。