对象中定义的 JS 函数范围不适用于代码覆盖率
JS function scope defined in object not working for code coverage
我有一个在对象中定义的函数。我用 Qunit 写过测试用例。当我尝试生成代码覆盖率报告时,出现错误 var test is not defined.
JS文件
$(function(){
var obj = {
testFunction: function () {
return true
}
}
});
Qunit 测试用例
QUnit.test("testFunction", function (assert) {
assert.equal(obj.convertPostCode(), true, "We expect return true");
});
首先 $ 是 jquery,将第一个参数视为选择器,但仍然执行该函数,但 returns 返回一个 jquery 对象。
其次,obj 是在该函数范围内定义的,在您的测试范围内不可用。
为了使其可用,在与测试相同的级别或比测试高一级或更高级别的外部定义 obj,在 $
内的函数内设置它的值
例子
var obj;
$(function(){
obj = {
convertPostCode: function (postcode) {
var len = postcode.length,
index = 0;
switch (len) {
case 5:
index = 2;
break;
case 6:
index = 3;
break;
case 7:
index = 4;
break;
default:
break;
}
return postcode.substr(0, index) + " " + postcode.substr(index);
}
}
});
假设测试处于同一级别,您现在应该可以访问 obj
我有一个在对象中定义的函数。我用 Qunit 写过测试用例。当我尝试生成代码覆盖率报告时,出现错误 var test is not defined.
JS文件
$(function(){
var obj = {
testFunction: function () {
return true
}
}
});
Qunit 测试用例
QUnit.test("testFunction", function (assert) {
assert.equal(obj.convertPostCode(), true, "We expect return true");
});
首先 $ 是 jquery,将第一个参数视为选择器,但仍然执行该函数,但 returns 返回一个 jquery 对象。
其次,obj 是在该函数范围内定义的,在您的测试范围内不可用。
为了使其可用,在与测试相同的级别或比测试高一级或更高级别的外部定义 obj,在 $
内的函数内设置它的值例子
var obj;
$(function(){
obj = {
convertPostCode: function (postcode) {
var len = postcode.length,
index = 0;
switch (len) {
case 5:
index = 2;
break;
case 6:
index = 3;
break;
case 7:
index = 4;
break;
default:
break;
}
return postcode.substr(0, index) + " " + postcode.substr(index);
}
}
});
假设测试处于同一级别,您现在应该可以访问 obj