メインコンテンツまでスキップ

RSpec

Overview

Rubyで使用する RSpec についてまとめているセクション。

RSpecによるRailsテスト入門

ユビキタス

describe

テスト対象のクラスやメソッドの振る舞いをまとめた「説明」ブロック。機能やクラス単位でテストをグループ化します。

context

特定の状態や条件を表すためのブロック。たとえば、「ログインしている場合」と「していない場合」など、異なる条件ごとにテストケースをグループ化します。

it

テストケースを表現するブロック。具体的な動作をテストするために使います。it の中に期待する動作を表現します。

let

遅延評価される変数を定義し、必要なときに初めて評価されることを保証します。let はテストの繰り返しのたびに呼び出される。

before / after

各テストの前後で特定の処理を実行するためのフック。たとえば、データベースのセットアップやクリーンアップ、認証などの事前・事後処理を行います。

shared_examples / it_behaves_like

複数のテストで同じ振る舞いをテストするための仕組み。DRYなテストを書くために利用される。

RSpecでよく使われるパターン

テストケースのグループ化(describeとcontextの使い分け)

テストのフロー制御(before, after, around)

テストの前後処理をどのタイミングで行うか、どう設計すればメンテナンスしやすくなるか。

Best Practices

  • テストは一つの期待にフォーカスする
    • it ブロックは1つの期待される動作に集中し、他の動作は別の it に分ける。
  • DRYなテストを書く
    • letshared_examples を活用して冗長なコードを避ける。