如何使用jasmine和node从命令行测试jQuery插件?

时间:2014-06-18 10:40:52

标签: javascript jquery node.js jasmine

我正在测试jQuery插件。我发现了这个问题:How to run Jasmine tests on Node.js from command line?但是当我跑步时:

node_modules/jasmine-node/bin/jasmine-node --verbose --junitreport --noColor spec

我收到了$ $未定义的错误。我怎么能包含jQuery? (现在我只测试不与dom交互的实用程序)。

3 个答案:

答案 0 :(得分:3)

您首先需要创建一个jQuery可以执行其操作的DOM。 您应该将其设置为全局变量,因为您可能正在访问窗口元素上的jQuery(或$)。

首先,将jquery和jsdom添加到package.json文件中,例如:

  "dependencies": {
    "jquery": "*"
  },
  "devDependencies": {
    "jsdom": "*"
  }

运行npm install以安装刚刚添加的新依赖项。

然后,在spec文件的顶部,执行以下操作:

var jsdom = require("jsdom").jsdom;
global.window = jsdom().parentWindow;
global.jQuery = global.$ = require("jquery")(window);

这使用jsdom创建一个窗口元素,让jquery知道要做什么。您现在应该可以在规范中访问jQuery$

答案 1 :(得分:0)

通过尝试和错误,我想出了这个代码,它可以在jasmine-node规范文件中使用jQuery和jsdom:

if (typeof window === 'undefined') {
    var jsdom = require("jsdom");
    global.document = jsdom.jsdom();
    global.window = global.document.parentWindow;
    var navigator = {userAgent: "node-js", platform: "Linux i686"};
    global.window.navigator = global.navigator = navigator;
    navigator.platform = "Linux i686";
    global.jQuery = global.$ = require("jquery");
}

答案 2 :(得分:0)

使用jsdom v7.2.2和node v4.2.4。我让它使用以下代码:

var jsdom = require("jsdom").jsdom;
global.window = jsdom().defaultView;
global.jQuery = global.$ = require("jquery");
var myModuleThatReliesOnJquery = require("./myModuleThatReliesOnJquery.js");