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

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

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

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

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

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

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

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

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

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

从Qunit 2.x升级指南我可以看到使用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 } ) ); 

应该工作。 🙂

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