【Rails】RSpecによるテストについて

テストについて

  • 手動テストだとリリースまでに手間が掛かり、不具合に気づかない可能性がある
  • 自動テストによりコードの変更の都度、エラーの有無を確認できる

テストを描くメリット

  • 環境のバージョンアップに対応

    • ruby,rails,gemのバージョンアップに伴うテストをする必要があるため
  • 適切な粒度のコードになりやすい

    • テストを意識するとメソッドやアクションが肥大化しすぎないため
  • 開発効率を上げる

    • 開発者もレビューアーも安心できるので開発時間を節約してくれるため

ライブラリ

  • RSpec

    • BDD(振る舞いを先に作り、あとでプロダクトコードを書く)のためのテスティングフレームワーク
    • 要求仕様をドキュメントのようにテストをかけるため、動く仕様書と呼ばれる
    • テストではなくSpecを書くという
  • Capybara

  • FactoryBot

    • テスト用データの作成をサポートするgem
    • Rails標準のFixtureの代替としてのgem

テストの種類

  • システムテスト(System Spec, Feature Spec)

    • E2Eテスト、ブラウザからwebアプリの挙動を外部的に確認する
  • 結合テスト(Request Spec)

    • 複数機能が連続して想定通りに動くかを確認する、システムテストよりも内部的な確認
  • 機能テスト(Contoroller Spec)

    • コントローラー単位のテスト(現在は非推奨でRequest Specを推奨)
  • 他に頻度が高いテスト

    • モデルテスト
      • システムテストよりも細かいケースで挙動を確認したい場合

      • TDDに特に適している

    • ルーティング、メーラー、ジョブ
      • 複雑なルーティングや置き換えづらいメーラーやジョブのテストは利用される

参考