【发布时间】:2019-11-09 10:26:02
【问题描述】:
我有以下代码,它将几个字段从一个对象映射到另一个对象并复制值:
//Function params
var source= {"f1": "v1", "f2": "v2", "f3":"v3"};
var fieldsMapping = {"f1": "c1", "f2":"c2"};
//function definition starts
var copiedObj = {};
for (var name in source) {
if (source.hasOwnProperty(name)) { //Line X
if(fieldsMapping[name]){
copiedObj[fieldsMapping[name]] = source[name];
}
}
}
console.log(copiedObj); //outputs {c1: "v1", c2: "v2"}
我在jest 中为此函数编写了测试用例,具有100% 的行覆盖率,但未覆盖分支覆盖率显示Line X。根据Standards 类似TSLint,for-in 循环后面应该跟if condition。
任何人都可以建议如何有一个测试用例来为此增加branch coverage 吗?
【问题讨论】:
-
如果您循环遍历该对象的属性,那该行肯定是多余的吗?
-
@andymccullough 是的,行是多余的,但如果删除,该函数不符合 TSLint。
-
公平点,您可以使用性能不高的 Object.keys().forEach()。但是,如果没有任何价值,我不会担心这样的代码覆盖率。每次测试的质量超过数量..
标签: javascript typescript unit-testing jestjs tslint