Javascript 对象中定义的JS函数范围不适用于代码覆盖率

Javascript 对象中定义的JS函数范围不适用于代码覆盖率,javascript,code-coverage,qunit,Javascript,Code Coverage,Qunit,我有一个函数,它是在一个对象中定义的。我使用Qunit编写测试用例。当我试图生成代码覆盖率报告时,它给我的错误是未定义var测试 JS文件 $(function(){ var obj = {         testFunction: function () {             return true         }     } }); Qunit测试用例 QUnit.test("testFunction", function (assert) {     assert.equal

我有一个函数,它是在一个对象中定义的。我使用Qunit编写测试用例。当我试图生成代码覆盖率报告时,它给我的错误是未定义var测试

JS文件

$(function(){
var obj = {
        testFunction: function () {
            return true
        }
    }
});
Qunit测试用例

QUnit.test("testFunction", function (assert) {
    assert.equal(obj.convertPostCode(), true, "We expect return true");
});

首先,$作为jquery,将第一个参数视为选择器,但仍然执行该函数,但返回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

Yes,它是Jquery函数