我在一个模块上运行cover
,Devel::Cover
并在使用条件三元运算符的行中获得 50% 的分支覆盖率,即
return @rgb ? map { hex $_ } @rgb : undef;
这个可以吗?if/else
为了获得 100% 的覆盖率,我是否必须更改代码以使用块?
我是新手,Devel::Cover
因此您可以提供的有关此方面的任何见解都将非常有帮助。
谢谢
我在一个模块上运行cover
,Devel::Cover
并在使用条件三元运算符的行中获得 50% 的分支覆盖率,即
return @rgb ? map { hex $_ } @rgb : undef;
这个可以吗?if/else
为了获得 100% 的覆盖率,我是否必须更改代码以使用块?
我是新手,Devel::Cover
因此您可以提供的有关此方面的任何见解都将非常有帮助。
谢谢
您没有覆盖三元的错误分支,因为您的测试没有覆盖@rgb
空的情况。在这种情况下,map
永远不会调用,但它会返回undef
(或()
像@ikegami 建议的那样)。
三元是这样的:
if (@rgb) {
return map { hex $_ } @rgb;
} else {
return undef;
}
所以那里有一个分支没有被测试覆盖。
你有几个选择:
@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';