【问题标题】:JS function scope defined in object not working for code coverage对象中定义的 JS 函数范围不适用于代码覆盖
【发布时间】:2020-08-13 00:02:13
【问题描述】:

我有一个在对象中定义的函数。我使用 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");
});

【问题讨论】:

    标签: javascript code-coverage qunit


    【解决方案1】:

    首先 $ 是 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

    【讨论】:

    • 是的,它是 Jquery 函数
    猜你喜欢
    • 2021-10-30
    • 2021-12-19
    • 2016-10-16
    • 2016-03-31
    • 1970-01-01
    • 2013-06-03
    • 2011-04-07
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多