カバレッジの厳密さにどこまでこだわるか
rcovは行カバレッジのツールなので、次のようなコードでは問題なくカバレッジを判定できる。
@itemがnilであるケースがテストされていなければ2行目のカバレッジは赤だ。
if @item.nil?
return render(:nothing => true, :status => '404 Not Found')
end
しかし次のようなコードでは if の結果がどちらに分岐してもカバーしているとみなされる。
@itemがnilであるケースがテストされていなくてもカバレッジはパスする。
return render(:nothing => true, :status => '404 Not Found') if @item.nil?
ということなのでif修飾子を使うのはやめた方がよい。おわり。
.
.
.
というのはウソで、カバレッジの厳密さにこだわってコードの書き方を変える必要はないと思う。
カバレッジは所詮目安なんだから。
あと100%である必要もないし、100%であることを強制するのはナンセンス。
中身の薄いテストでも100%にするだけならできるわけなので。
でもまあTDDで開発してたら自然と100%になる気はするなぁ。
100%にする必要はないと言ったけど、100%だったらやっぱり気持ちいいな。
だからTDDは気持ちいい。
うむ、なんだかきれいにまとまった気がする。(ほんとか?)