テストコードを書く意義
今までテストコードを書く意味があまり理解できておりませんでした。
本番環境にデプロイした後問題を出さないために大切、と言われているものの、
「それだったら開発環境で実際に動かしてチェックすればいいじゃん」という思いがあり、今ひとつ納得できておりませんでした。
しかし、先ほどテストコードを実際に書いて見ることで、テストコードを書く大切さを少し実感したので記事にしておこうと思いました。
テストコードを書くメリット
モデルレベル、コントローラーレベル、など細かいレベルでのチェックが可能。
(具体例)
メッセージモデルに対し、
- メッセージがあれば保存できる
- 画像があれば保存できる
- メッセージと画像があれば保存できる
- メッセージも画像もナイト保存できない
- group_idが無いと保存できない
- user_idが無いと保存できない
という6つのテストコードを書きました。
以下がその画像です。
このテストコードを実行してみたとこと、以下のような結果に。。。
開発環境で実際に試した際はuser_idもgroup_idもないと保存できない状態だったのにmodelのテストは通過しない。。。
DBレベルでnull :falseをかけているだけではだめなのだと気づき、
modelファイルに以下のvalidate :group, :user, presence: true を追記。
そしたら、modelのテスト通過してくれました!
modelレベルでテストしないと、railsで用意してくれているerrorメッセージも表示されないため、ユーザーにもなぜ保存できなかったかわかりづらくなる。
まとめ
このように細かいレベルでのチェックを行うことが大切であり、細かいレベルでのチェックはテストを書くことで確認できる!!