4

我有一个 index.js 看起来像

...
[line 69] if A:
[line 70]    foo()
[line 71] else if B:
[line 72]    bar()

我已经为第 69 - 70 行编写了一个测试,证据是如果我将其注释掉,纱线测试 --coverage 将显示第 69、70 行丢失。

然而,即使有这个测试,覆盖抱怨第 69 行丢失

我注意到的另一件事是,如果我将 if 条件交换为

...
[line 69] if B:
[line 70]    bar()
[line 71] else if A:
[line 72]    foo()

覆盖范围内仍然缺少第 69 行

开玩笑的原因是什么?我该如何解决?

4

1 回答 1

4

这里实际上有三个分支:要么if被触发,要么被触发,else if或者都不被触发。

即使在这种情况下后一种情况是空的(因为没有else语句),您仍然需要一个测试,其中既不触发if也不else if触发完全覆盖。

于 2020-11-19T16:13:20.390 回答