javascript - 对象中定义的 JS 函数范围不适用于代码覆盖
问题描述
我有一个在对象旁边定义的函数。我使用 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,将第一个参数视为选择器,但仍执行该函数但返回一个 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
推荐阅读
- r - 结合选择助手和谓词函数在 dplyr 中进行变异
- laravel - Laravel 与自定义表名和 ID 的多对多关系
- php - 带有消息“transaction_amount”属性的“MercadoPagoException”不能为空
- css - 更新 Windows 10 引导 css 后未加载
- php - 可以将多个域路由到不同的 CodeIgniter 模块或控制器吗?
- avro - 如何将 Avro GenericRecord 转换为有效的 Json,同时将时间戳字段从毫秒转换为日期时间?
- javascript - 使用 ReactJS.net 创建寻呼机。
- mysql - 通过 char 数组指针存储的结构成员数据返回垃圾值
- c# - c# winform call cmd和手动打开cmd有什么区别?
- c# - SonarQube 没有生成代码覆盖率报告