【问题标题】:"Introduced global variable(s) _firebug" in QUnit testsQUnit 测试中的“引入全局变量 _firebug”
【发布时间】:2011-10-12 13:12:44
【问题描述】:

我正在使用 QUnit 在我的网站上执行各种简单的测试。其中一项测试是创建一个对话框,显示它然后关闭它。测试运行良好,但在激活 Firebug 的 Firefox 上运行时出现错误:

3. Introduced global variable(s): _firebug

我可以忍受它,但它很烦人:Chrome 上的相同代码运行良好。我排除了 jQuery UI 作为罪魁祸首,因为没有它也会出现同样的错误。但是,在没有 Firebug 没有 console.log 跟踪的情况下运行不会显示问题。

我搜索了我正在使用的所有 javascript 代码,但没有发现任何“萤火虫”变量;谷歌对此事保持沉默。我想要我的绿屏(所有测试通过)回来!有什么想法吗?

【问题讨论】:

  • 您特别提到了“激活 Firebug”,我们可以假设禁用 Firebug 不会发生这种情况吗?如果是这种情况,我会查看 Firebug 并查看它在您的测试期间所做的事情 - 可能是 Firebug 抱怨 jQuery UI 代码的某些部分(或您对它的使用),而这反过来又是创建该全局变量。
  • @AnthonyGrist 在没有 Firebug 的情况下运行不会显示问题。但更糟糕的是:使用 Firebug 运行并且没有任何 console.log 跟踪,问题不会重现。此外:再次运行原始测试但没有 jQuery UI 显示相同的问题。所以这似乎是 Firebug 和 console.log 的奇怪组合——我会相应地更新问题。感谢您的领导!

标签: javascript jquery unit-testing jquery-ui qunit


【解决方案1】:

在谷歌搜索多一点之后,我不是第一个发现这个问题的人:badglobals.jsblogGoogle groups。我的特定问题的解决方案(QUnit 报告了一个泄漏的全局变量)是在开始测试之前添加全局声明,例如在运行第一个模块之前:

var _firebug;
module('myModule');

我也看到了一个虚假的 xdc 变量;相同的解决方案。我的第一个 QUnit 测试文件现在看起来像这样:

/* declare spurious Firebug globals */
var _firebug;
var _xdc_;

/* run tests */
module('myModule');

我的栏现在全是绿色的,即使没有选中 noglobals!我希望这对发现这个烦人问题的其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-23
    • 2017-02-27
    • 2013-01-14
    • 2016-05-28
    • 1970-01-01
    • 2011-07-29
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多