我在cover
上运行Devel::Cover
模块,并在使用条件三元运算符的行中获得50%的分支覆盖率,即
return @rgb ? map { hex $_ } @rgb : undef;
这样好吗?我是否必须更改代码才能使用if/else
块以获得100%的覆盖率?
我是Devel::Cover
的新手,所以您可以提供的有关此问题的任何见解都会非常有用。
由于
答案 0 :(得分:3)
您没有覆盖三元组的 false 分支,因为您的测试不包括@rgb
为空的情况。在这种情况下,永远不会调用map
,但它会返回undef
(或()
,如@ikegami建议的那样。)
三元与此相同:
if (@rgb) {
return map { hex $_ } @rgb;
} else {
return undef;
}
所以那里有一个分支没有被测试覆盖。
您有几种选择:
@rgb
没有元素,则不确保程序执行您想要的操作# uncoverable branch false
条评论
编写一个测试用例,期望@rgb
没有元素
is foo('no_rgbs'), undef, 'returns undef when there are no elements';