はじめに
本記事はProgaku Advent Calendar 2024の20日目の記事となります。
今回はRSpecを書いていてどれくらいソースコードに対してテストを網羅出来ているかを可視化してみようというテーマで書こうと思います。
試した環境は
・Rails 7.1.3
・Ruby 3.3.3
・RSpec 6.1.3
です。
gemを導入する
今回はSimpleCovというgemを使用してみました。
GitHub
README通りGemfileに下記を追記してbundle install
を実行します。
gem 'simplecov', require: false, group: :test
spec/spec_helperの最上部に下記を追加します。
require 'simplecov'
SimpleCov.start
導入結果
rspecを実行します。
bundle exec rspec
実行後にcoverage
というディレクトリが追加されます。
この中にあるindex.htmlを開いてみます。
全体のカバレッジ率と各ファイルに対するカバレッジ率が可視化出来ました。
個別ファイルを見ると、カバー出来ている部分は緑、カバー出来ていない部分は赤でハイライトされています。
上記コードはspec/rails_helper.rb
になりますが、こんな感じでハイライトされるというためのものなので内容に特に意味はないです。
設定関連
specディレクトリは対象から除外しても良いかなと思うので、spec/spec_helperに以下を追記します。
SimpleCov.start do
# add_filter "対象外にしたいディレクトリ"を記載することでカバレッジの対象外になる
add_filter "/spec/"
end
これで/specはカバレッジの対象外となります。
また、ModelsやControllersなどでグルーピングしたい場合は以下を追記します。
SimpleCov.start do
add_group 'Models', 'app/models'
add_group 'Controllers', 'app/controllers'
end
設定後に再度bundle exec rspec
を実行し/coverage/index.html
を開くと下記のようにグルーピングされます。(赤枠部分)
また、git管轄でcoverage
を管理する必要もないかと思うので、.gitignore
にcoverage
を追記しておくか、
echo coverage >> .gitignore
で設定しておくといいかもしれないです。
まとめ
導入も簡単に出来るので、
どこまでRSpecを書けばいいんだろう
どれくらいソースコードに対してテスト出来てるのか知りたい
みたいな方は一度導入してみるのもいいのかなと思いました。