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
これに慣れていないので、これについてあなたが提供できる洞察は本当に役に立ちます。
ありがとう
テストでは が空のケースがカバーされていないため、三項の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';