如何在qUnit中停止全局失败?

时间:2013-01-23 13:35:54

标签: javascript jquery qunit

我是qunit的新手,并且正在尝试将其与现有环境集成。

我在使用jQuery的页面上遇到的一个问题是:

global failure (1, 0, 1)Rerun6 ms
Uncaught ReferenceError: $ is not defined

我认为这是因为我没有在qunit HTML中调用jquery库。是否可以设置一个参数来忽略像这样的全局变量?我试图使HTML尽可能灵活,并且由于许多编辑器具有不同的依赖关系,我只想要qunit来测试我专门给它测试的函数。

5 个答案:

答案 0 :(得分:9)

我对同样的错误感到困惑,但是没有使用jQuery。负责传播错误的QUnit部分是window.onerror回调函数,除其他外,它检查是否设置了QUnit.config.current.ignoreGlobalErrors配置值。

QUnit配置值在the QUnit.config documentation中描述。遗憾的是,未描述current对象的config属性,但通过查看源,ignoreGlobalErrors配置属性定义是否报告全局错误。注释掉以下行的测试运行正常:

QUnit.test( "global failure", extend( function() {
    QUnit.pushFailure( error, filePath + ":" + linerNr );
}, { validTest: validTest } ) );

我意识到这只是一个黑客,但如果你正在寻找一种快速的方法来让QUnit保持沉默,那么这将有效。

答案 1 :(得分:1)

我在使用Chrome时遇到了这个问题,发现这是我的Chrome扩展之一,它引发了错误并导致QUnit出现问题。尝试禁用扩展并重新启动浏览器。

答案 2 :(得分:1)

Qunit 2.x upgrade guide我可以看到使用Qunit对象时发生了变化,使用1.x时它的工作原理如下:

test( "global failure", extend( function() {
    QUnit.pushFailure( error, filePath + ":" + linerNr );
    }, { validTest: validTest } ) );

另一方面,当使用2.x:

Qunit.test( "global failure", extend( function() {
    QUnit.pushFailure( error, filePath + ":" + linerNr );
    }, { validTest: validTest } ) );

应该工作。 : - )

答案 3 :(得分:0)

对我而言,这只是一个QUnit问题。 刚刚更改了qunit的较低版本,没有错误..

答案 4 :(得分:0)

Qunit测试用例 代码之前,添加以下内容:

window.onerror = function (msg, url, lineNo, columnNo, error) {
    return false;
}