1

我无法让 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 函数,茉莉花通过了所有测试——那是什么意思?

4

1 回答 1

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

于 2012-09-03T03:57:53.673 回答