Effective Ruby 第6章まとめ

こんにちは!kossyです!




さて、今回はEffective Rubyの第6章の覚えておくべき事項を
ブログにまとめてみたいと思います。

前回までの章をまとめたものはこちら
Effective Ruby 第1章まとめ - その辺にいるWebエンジニアの備忘録
Effective Ruby 第2章まとめ - その辺にいるWebエンジニアの備忘録
Effective Ruby 第3章まとめ - その辺にいるWebエンジニアの備忘録
Effective Ruby 第4章まとめ - その辺にいるWebエンジニアの備忘録
Effective Ruby 第5章まとめ - その辺にいるWebエンジニアの備忘録



第6章 テスティング

6-1. MiniTestユニットテストに慣れよう

  • テストメソッドの名前には、"test_"というプレフィックスを付けなければならない。
  • トラブルシューティングやメンテナンスを楽にするために、テストメソッドは短くする。
  • エラー時により良いメッセージを表示させるために、最も適したアサーションを使うようにする。
  • アサーションとその逆(refute_)は、MiniTest::Assertionsモジュールでドキュメントされている。

6-2. MiniTestスペックテストに慣れよう

  • テストクラスの作成にはdescribeメソッド、テスティングの定義にはitメソッドを使う。
  • アサーションメソッドも使えるが、スペックテストでは一般にObjectクラスに注入されたエクスペクテーションメソッドを使う。
  • エクスペクテーションは、MiniTest::Expectationsモジュールでドキュメントされている。

6-3. モックオブジェクトで決定論をシミュレートしよう

  • 外の世界の非決定性からテストを切り離したいときにはモックを使うとよい。
  • モックテストなどのメソッドを交換するテストは、本番でエラーを起こす未テストコードを残す危険がある。
  • テストメソッドを終える前に、必ずMiniTest::Mock#verifyを呼び出す。

6-4. 効果的なテストを追求しよう

  • コードのハッピーパスと例外パスの両方を試すためにはファズテスト、プロパティテストツールを使おう。
  • テストで実行されたからといって必ずしも正しいコードと言うわけではないため、コードカバレッジツールは間違った安心感を与える可能性がある。
  • 機能を書いているときにテストをする方があとでテストをするよりもずっと簡単だ。
  • バグの根本原因を探し始める前にそのバグのために失敗するテストを書こう。
  • できる限りテストを自動化しよう。


出典: https://www.shoeisha.co.jp/book/detail/9784798139821