gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:30:54 25 4
gpt4 key购买 nike

我正在使用 if-branch 测试代码

fVal => {
if(!fCache[idxF]) fCache[idxF] = {}
fCache[idxF][idxCb] = fVal
}

这是 declared as "missed" by Coveralls .

但是,如果我删除该 if 行, the tests fail complaining about 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
}

最佳答案

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

“if”语句产生 2 个分支:条件 true 和条件 false。如果您的测试仅对条件评估为“true”的数据进行操作,那么您的覆盖率恰好是 2 个分支中的 1 个(我相信报告告诉您的就是这一点)。

要获得该行的 100% 覆盖率,您必须对该行进行 2 次执行传递 - 一次条件评估为 true,另一次条件评估为 false。

关于javascript - 代码覆盖率显示 if-branch 丢失,但删除它会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com