2011-10-12 53 views
2

我正在使用QUnit在我的网站上执行各种简单的测试。其中一项测试是创建一个对话框,显示并关闭它。测试运行正常,但是当Firefox的Firebug的运行激活我得到一个错误:在QUnit测试中引入全局变量_firebug

3. Introduced global variable(s): _firebug 

我可以住在一起,但很烦人:在Chrome相同的代码运行正常。我排除了jQuery UI的罪魁祸首,因为没有它的同样的错误出现。但是,如果没有使用Firebug 而没有使用console.log跟踪,则不会显示问题。

我grepped所有我使用的JavaScript代码,发现没有提及任何“萤火虫”变数;谷歌对此事保持沉默。我想要我的绿屏(所有测试都通过)!有任何想法吗?

+0

您特别提到“使用Firebug激活”,我们可以假设它不会在Firebug禁用时发生吗?如果是这样的话,我会查看Firebug,看看它在测试过程中的作用 - 可能是Firebug抱怨jQuery UI代码的某些部分(或者您的使用情况),反过来创建这个全局变量。 –

+0

@AnthonyGrist无Firebug运行不会显示问题。但更糟糕的是:使用Firebug运行_并且没有任何console.log traces_问题不会被复制。此外:再次运行原始测试,但没有jQuery UI显示相同的问题。所以它似乎是一个Firebug和console.log的奇怪组合 - 我会相应地更新问题。感谢领先! – alexfernandez

回答

5

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

var _firebug; 
module('myModule'); 

我看到虚假XDC也是可变的;同样的解我的第一个QUnit的测试文件现在看起来是这样的:

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

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

我的酒吧全部是绿色,现在,即使noglobals检查!我希望这可以帮助任何发现这个烦人问题的人。