我有一个对象和一些当前在我编写的每个单独测试中声明的变量(根本不是DRY)。我想要做的是在模块的设置方法中创建这个对象和变量,以便所有测试都可以访问对象和变量。
这就是我目前的尝试方式:
QUnit.module("Main Function Test", {
setup: function() {
this.controls = {
validCharacters : /^[0-9a-zA-Z]+$/
,
searchResultTable : {
setVisible : setVisible
},
commentBoxContainer: {
setVisible : setVisible
}
};
var getValue = sinon.stub().returns(false);
var setEnabled = sinon.spy();
},
});
QUnit.test("someTest that should have access to the above 'controls' object and variables" ...
当我运行测试时,它们会失败,因为控件对象未定义或无法找到变量(getValue或setEnabled)。
有人可以分享我做错了什么吗?或者使对象和变量可用于相应模块中的所有测试的正确方法?
答案 0 :(得分:0)
我非常确定使用QUnit,您只需要在模块设置功能之外声明该数据变量,以便在测试中访问它...
// IIFE to contain variables in scope of this file...
(function() {
// variables to use across tests
var controls;
var getValue;
var setEnabled;
QUnit.module("Main Function Test", {
setup: function() {
// assign the controls value (declared above)
controls = {
validCharacters : /^[0-9a-zA-Z]+$/,
searchResultTable : {
setVisible : setVisible
},
commentBoxContainer: {
setVisible : setVisible
}
};
getValue = sinon.stub().returns(false);
setEnabled = sinon.spy();
}
});
QUnit.test("someTest" ...);
QUnit.test("someOtherTest" ...);
})();