はじめに
今回は、Ruby3.2の新機能を使ってRailsアプリケーションでViewファイル(ERB)のコードカバレッジを計測する方法についてご紹介します。
ここでは、SimpleCovというカバレッジツールを使用して、Ruby3.1まで出来なかったViewファイル(ERB)のカバレッジを計測する方法を説明します。
前提条件
- Ruby 3.2
- SimpleCov 導入済み
- ViewファイルをERBで記述している
Simplecovの設定例
以下を参考にSimpleCovの設定内容を見直していただければ、Viewファイル(ERB)のコードカバレッジが計測されるようになります。
.simplecov
SimpleCov.start('rails') do
# この設定を追加することでERBファイルのカバレッジ計測が有効となる
enable_coverage_for_eval
# いい感じにグループ分けされるようにViewsのグループ定義を追加
add_group 'Views', 'app/views'
# 未実行ファイルの存在を検出するために対象となるERBファイルをGLOB指定
# この設定を足すことでテストを全く通っていないERBファイルについてもカバレッジ0%として検出されるようになります
track_files 'app/**/*.erb'
end
# ERBファイルの場合の不要な警告抑制のためのパッチ(無くても動作的には問題ありません)
# https://github.com/simplecov-ruby/simplecov/issues/1057
SimpleCov::SourceFile.prepend(Module.new do
private
def coverage_exceeding_source_warn
return if @filename.end_with?('.erb')
super
end
end)
end
実行結果の例
終わりに
Viewファイル(ERB)のコードカバレッジについても計測対象とすることで、開発者がアプリケーションのテスト品質をより把握することが出来るようになるかと思います。
既にSimpleCovとERBを利用しているプロジェクトの場合は、設定を有効にすることを検討してみてはいかがでしょうか。
参考記事
- Ruby 3.2でERBテンプレートのカバレッジが測れるようになるぞ!! (1) eval, ERB 編 | Wantedly Engineer Blog
- Ruby 3.2でERBテンプレートのカバレッジが測れるようになるぞ!! (2) SimpleCov, Rails View ファイル編 | Wantedly Engineer Blog
- Evaluating More Coverage in Ruby 3.2 - Kevin Murphy
- Support coverage for eval by mame · Pull Request #1037 · simplecov-ruby/simplecov