我意识到QUnit.module
提供了围绕每个测试的设置和拆除回调。
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.test
中使用。但是,由于变量只有函数作用域,因此两个测试失败,说usedAcrossTests is undefined
。
我可以删除var
声明,但那会污染全局范围。特别是如果我有多个模块,我宁愿不将特定于测试的变量声明为全局变量。
有没有办法在setup
中指定要在模块内的测试中使用的变量,而不会污染全局范围?
答案 0 :(得分:16)
我刚才意识到它比我以前的答案更简单。 只需在当前对象的所有其他模块测试中添加要访问的所有属性。
QUnit.module("unrelated test", {
setup: function() {
this.usedAcrossTests = "hello"; // add it to current context 'this'
}
});
然后在每个你希望使用它的测试中。
QUnit.test("some test", function(assert) {
assert.deepEqual(this.usedAcrossTests, "hello", "uh oh");
});
希望这有帮助