我意识到QUnit.module提供了围绕每个测试的设置和拆除回调.
@H_403_2@QUnit.module("unrelated test",{
setup: function() {
var usedAcrossTests = "hello";
}
});
QUnit.test("some test",function(assert) {
assert.deepEqual(usedAcrossTests,"hello","uh oh");
});
QUnit.test("another test",function(assert) {
assert.deepEqual(usedAcrossTests.length,5,"uh oh");
});
如在setup中所见,我想声明一个变量以在以下QUnit.tests中使用.但是,由于变量只有函数作用域,因此两个测试失败,称usedAcrossTests未定义.
我可以删除var声明,但那样会污染全局范围.特别是如果我有多个模块,我宁愿不将特定于测试的变量声明为全局变量.
有没有办法在设置一个变量以在模块内的测试中使用而不污染全局范围?
解决方法
我刚刚意识到它比我以前的答案更简单.
只需在当前对象的所有其他模块测试中添加要访问的所有属性. @H_403_2@QUnit.module("unrelated test",{ setup: function() { this.usedAcrossTests = "hello"; // add it to current context 'this' } });
只需在当前对象的所有其他模块测试中添加要访问的所有属性. @H_403_2@QUnit.module("unrelated test",{ setup: function() { this.usedAcrossTests = "hello"; // add it to current context 'this' } });
然后在每个你希望使用它的测试中.
@H_403_2@QUnit.test("some test",function(assert) { assert.deepEqual(this.usedAcrossTests,"uh oh"); });希望这可以帮助