qunit和jquery的未捕获异常

时间:2013-04-19 17:10:16

标签: javascript jquery node.js unit-testing qunit

我在尝试使用qunit在命令行上运行javascript单元测试时遇到了问题。

以下是重现错误的示例代码:

文件 util.js

function abc() {
    return 'abc';
}

if (typeof module !== 'undefined' && module.exports) {
    module.exports = {
        abc: abc
    };
}

文件 util-tests.js

var qunit = require("qunit");

test("Test abc function", function () {
         equal(util.abc(), 'abc');
});

使用这些文件,我可以使用以下命令运行测试(在shell中使用测试结果提供类似表的输出):

qunit -c util:util.js -t util-tests.js

现在,如果我将以下内容添加到util.js

,它就会中断
$(document).ready(function () {
    /* some code here */
});

这是错误输出:

qunit -c util:util.js -t util-tests.js

Testing /home/mfrere/jstst/util.js ... [Error: Uncaught exception in child process.]

同样的问题:

var a = $;

或:

var a = document;

所以这让我觉得我需要以某种方式导入jQuery,所以我考虑将jquery.js添加为命令的依赖项,如下所示:

qunit -c util:util.js -t util-tests.js -d jquery.js

上面的命令给出了相同的'Uncaught exception'错误,即使util.js不包含对'$'的任何引用。

我可能还需要做其他事情来获得qunit来识别'文档',但我不知道是什么或如何。

现在我的问题是:我该怎么做才能让它工作?重要的是要记住我想在命令行测试我的文件,而不是在浏览器中测试。

以防我在设置过程中出错了,这就是我安装node / qunit(在ubuntu下)的方式:

git clone git://github.com/creationix/nvm.git ~/.nvm

在.bashrc中,我添加了以下行:

source ~/.nvm/nvm.sh

选择了特定版本的节点

nvm install v0.9.2
nvm alias default 0.9

并安装了qunit

npm install -g qunit

最后我还要在.bashrc中添加它:

export NODE_PATH=~/.nvm/v0.9.2/lib/node_modules

1 个答案:

答案 0 :(得分:3)

您尚未导入jQuery:

$ = require('jquery'), jQuery = require('jquery');

如果您使用的是browserify,请将其更改为“jquery-browserify”。