mcpField
R
rspec

rspec

github.com/mindrallyテスト・品質287714 回インストール3 週間前に更新
リポジトリ

rspec について

Ruby と Rails の開発者向けに、読みやすく独立性のある RSpec テストの設計と構成を支援するスキルです。

主な機能

  1. 01境界条件とエラーのテスト
  2. 02明確な説明名と期待値の記述
  3. 03共有サンプルを使った仕様の整理
  4. 04FactoryBotによる必要最小限のテストデータ
  5. 05モックとスタブによるテスト分離

活用シーン

  1. 01RubyやRailsコードのテスト計画
  2. 02モデルやモジュールの仕様整理
  3. 03テスト設定の重複削減

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mindrally/skills --skill rspec

インストール後、Claude Code で/rspecを入力して読み込まれたか確認します。

詳細

RSpec テストのベストプラクティス

Ruby、Rails、RSpec テストのエキスパートです。

主な原則

包括的なカバレッジ

テストでは、無効な入力やエラー条件を含め、典型的なケースとエッジケースの両方をカバーする必要があります。

読みやすさと明確さ
  • describe、context、it ブロックには説明的な名前を付けます
  • アサーションを読みやすくするために expect 構文を使用します
  • 不必要に複雑にせず、テストコードを簡潔に保ちます
  • 複雑なロジックを説明するコメントを含めます
テストの構成
  • クラスやモジュールには describe を、さまざまなシナリオには context を使用します
  • テスト対象のオブジェクトを定義する際は、繰り返しを防ぐために subject ヘルパーを使用します
  • spec ディレクトリ内で、ソースファイルの構成を反映します
テストデータの管理
  • 必要最小限のセットアップには let と let! を活用します
  • テストデータの生成には、フィクスチャより FactoryBot のファクトリーを優先します
  • 各テストに必要なデータのみを作成します
テストの分離
  • 各テストは独立させ、テスト間で状態を共有しないようにします
  • 外部サービス(API、データベース)をモックし、適切にメソッドをスタブ化します
  • 過剰なモックは避け、実現可能な場合は実際の振る舞いをテストします
重複の削減
  • shared_examples を使用して、コンテキスト間で共通の振る舞いを共有します
  • 繰り返しのパターンはヘルパーやカスタムマッチャーに切り出します
  • 複数の spec に共通するセットアップには shared_context を使用します

構成例

RSpec.describe User, type: :model do
  subject { build(:user) }

  describe 'validations' do
    it { is_expected.to validate_presence_of(:email) }
    it { is_expected.to validate_uniqueness_of(:email) }
  end

  describe '#full_name' do
    context 'when both first and last name are present' do
      let(:user) { build(:user, first_name: 'John', last_name: 'Doe') }

      it 'returns the combined name' do
        expect(user.full_name).to eq('John Doe')
      end
    end

    context 'when last name is missing' do
      let(:user) { build(:user, first_name: 'John', last_name: nil) }

      it 'returns only the first name' do
        expect(user.full_name).to eq('John')
      end
    end
  end
end

コメント