Devel::Cover 条件三元运算符的分支覆盖
Devel::Cover Branch coverage on conditional ternary operator
我是 运行 cover
来自 Devel::Cover
的一个模块,并且在使用条件三元运算符的行中获得了 50% 的分支覆盖率,即
return @rgb ? map { hex $_ } @rgb : undef;
这样可以吗?我是否必须更改代码以使用 if/else
块以获得 100% 的覆盖率?
我是 Devel::Cover
的新手,所以您能提供的任何见解都将非常有帮助。
谢谢
您没有覆盖三元的 false 分支,因为您的测试没有覆盖 @rgb
为空的情况。在那种情况下,map
将永远不会被调用,但它会 return undef
(或像@ikegami 建议的 ()
)。
三元是这样的:
if (@rgb) {
return map { hex $_ } @rgb;
} else {
return undef;
}
所以那里有一个分支没有被测试覆盖。
您有多种选择:
- 使用空列表并像 ikegami 建议的那样删除三元组,并考虑到如果
@rgb
没有元素 ,您不能确保程序执行您想要的操作
- 添加
# uncoverable branch false
评论,如 https://metacpan.org/pod/Devel::Cover#UNCOVERABLE-CRITERIA 中所述
编写一个测试用例,它期望 @rgb
没有元素
is foo('no_rgbs'), undef, 'returns undef when there are no elements';
我是 运行 cover
来自 Devel::Cover
的一个模块,并且在使用条件三元运算符的行中获得了 50% 的分支覆盖率,即
return @rgb ? map { hex $_ } @rgb : undef;
这样可以吗?我是否必须更改代码以使用 if/else
块以获得 100% 的覆盖率?
我是 Devel::Cover
的新手,所以您能提供的任何见解都将非常有帮助。
谢谢
您没有覆盖三元的 false 分支,因为您的测试没有覆盖 @rgb
为空的情况。在那种情况下,map
将永远不会被调用,但它会 return undef
(或像@ikegami 建议的 ()
)。
三元是这样的:
if (@rgb) {
return map { hex $_ } @rgb;
} else {
return undef;
}
所以那里有一个分支没有被测试覆盖。
您有多种选择:
- 使用空列表并像 ikegami 建议的那样删除三元组,并考虑到如果
@rgb
没有元素 ,您不能确保程序执行您想要的操作
- 添加
# uncoverable branch false
评论,如 https://metacpan.org/pod/Devel::Cover#UNCOVERABLE-CRITERIA 中所述
编写一个测试用例,它期望
@rgb
没有元素is foo('no_rgbs'), undef, 'returns undef when there are no elements';