##はじめに
これは、Railsを学び始めてRspecを書くようになったけどなんだかピンとこなかったのがsimplecovを使い出したら俄然楽しくなった、という話です。
ちなみに筆者は、1年ほど前に初めてRailsに触れて最近スタートアップで働き始めた駆け出しエンジニアです。
##この記事の対象
・いまRailsを学んでいる最中の方
・一応Rspecを書いたことはある方
・Rspecをきちんとかけるようになったらいいなと思っているけど、いまいちよくわからないなと感じている方
##Rspecってよくわからなくない?
僕がRspecを学び始めたから、結構長い間よくわからないなーと感じていました。
なんかもやもやするというか、Railsの難しさとは違う難しさがあるなぁ。でもどこが難しいのかもよくわかんないな、という感覚を持っていました。
今思うと、よくわからなかったのはこんな部分だと思います。
・テストが通っても、それがちゃんとテストしたことになっているのかがわからない。
・どの程度細かいところまでカバーするように書いたらオッケーなのか基準が全くわからない。
・今コード全体に対してどれくらいテストが完了したのか掴みづらい。
学習中も、テストが大事という記事はよく見ていたので、業務でコーディングするならテストは必須なんだろうなとは思っていました。
なので、Rspecの神 伊藤淳一さんが翻訳された「Everyday Rails - RSpecによるRailsテスト入門」などを参照し、とりあえずテストは書けるようになってきました。
でも、何かがわかってない感は依然として拭えずにいたのです。
何かテストをサポートしてくれるツールはないか探しているときにsimplecovというgemを見つけました。
simplecovはRspecで書いたテストのカバレッジを計測してくれるツールです。カバレッジとは、コード全体に対して、どの程度の範囲をテストがカバーできているかを算出したものです。
最初にsimplecovを使うとどんなことができるかご覧ください。
まずexampleを1つだけ書いてテストを実行します。
その状態で、カバレッジを確認するとこんな表示になります。
このコントローラはアクションが少ないので、これだけでカバレッジが68%になりました。
また、検証ができた箇所は緑に、まだのところは赤くなります。
そのため、成功するパターンはテスト済みだけど、失敗するパターンは検証できていない、
などどこまで終わったかが視覚的にわかります。
そして、その赤い部分を消すようにテストを書いていくと、、
やった!カバレッジ100%!
ちょっとしたゲームみたいな感覚になってテストコードを書くのが楽しくなりました。
ここで気づいたのは、なんで今までテストを書くことにモチベーションが持ちにくかったのか、ということです。
例えば、フロントとかはコードを書くと見た目に変化があって、これだけ進んだな、という実感が持てます。
それに対して、テストは結果は見えるけどなんか開発が進んでいるという感覚をリアルに持つことが難しいからだったのかな、と思います。
テストって大事なのはわかっているけど、なんか地味というかちょっと辛い作業というイメージがあったので、モチベーションが上がったのは僕にとって大きな収穫でした。
インストールもとても簡単です。
##simplecovのインストール
gem 'simplecov'
> bundle install
(追加)
require 'simplecov'
SimpleCov.start 'rails'
上記の設定をしてから、Rspecのテストを実行するとアプリのルートディレクトリにcoverageというフォルダができます。
その中のindex.htmlを開くと、上で紹介したカバレッジを見ることができます。
##最後に
仕事でコーディングしていれば当然カバレッジは計測すると思いますが、個人でRailsを学んでいる方は使ったことがないかたもいるのではないでしょうか?
当然テストの精度はカバレッジだけで測ることはできませんが、個人的にはテストに対する印象を大きく変えてくれたgemだったのでご紹介をさせていただきました。
興味を持たれた方はぜひ一度お試しください。
では、楽しいRspecライフを!