为了账号安全,请及时绑定邮箱和手机立即绑定

代码覆盖率显示 if-branch 丢失但删除它会导致错误

代码覆盖率显示 if-branch 丢失但删除它会导致错误

桃花长相依 2021-06-21 15:26:06
我正在使用 if-branch 测试代码fVal => {    if(!fCache[idxF]) fCache[idxF] = {}    fCache[idxF][idxCb] = fVal}这是由工作服“错过”声明。但是,如果我删除该 if 行, 测试将失败并抱怨 undefined prop:fCache[idxF][idxCb]=fVal;                   ^TypeError: Cannot set property '0' of undefined这正是 if 分支纠正的错误。那么为什么它在报道中被宣布为“错过”呢?添加。这是失败的测试:test('ap over single CPS function', t => {    const cpsFun = cb => cb(42)    const cpsNew = ap(cb => cb(x => x*2))(cpsFun)    cpsNew(t.cis(84))})以及正在测试的相关代码片段:const ap = (...fns) => cpsFn => {  let fCache = {},    argsCache = {}      ...    fns.forEach((f, idxF) => f(...cbs.map((cb, idxCb) =>      fVal => {        if(!fCache[idxF]) fCache[idxF] = {}          ...      }    )))  }  return cpsNew}
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

您的代码有点难以理解,但是根据您问题的内容,我猜您不了解代码覆盖率如何适用于条件分支。

“if”语句导致 2 个分支:条件为真和条件为假。如果您的测试仅对条件评估为“真”的数据进行操作,那么您的覆盖范围恰好是 2 个分支中的 1 个(我相信这是报告告诉您的)。

要获得该行的 100% 覆盖率,您必须在该行上执行 2 次执行传递 - 一次条件评估为真,另一次条件评估为假。


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信