mcpField
F
functional-tests

functional-tests

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

functional-tests について

Symfony 向けのテスト技能で、HTTP エンドポイント、サービス、リポジトリ、重要な URL を検証します。テストクラスの選択に加え、認証、データベース分離、レスポンス検証の方法を示します。

主な機能

  1. 01HTTP、カーネル、単体テストの選択
  2. 02エンドポイントと描画 DOM の検証
  3. 03loginUser() による認証
  4. 04データベーステストとフィクスチャの分離
  5. 05URL スモークテストの追加

活用シーン

  1. 01コントローラーレスポンスとフォームの検証
  2. 02実データベースを使ったサービスのテスト
  3. 03認証が必要なルートのテスト
  4. 04重要な URL のスモークテスト追加

インストール

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill functional-tests

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

同梱ファイルreference.md

詳細

Functional Tests(Symfony)

使用する場面

  • カーネル経由で、ステータス、リダイレクト、レンダリングされた DOM、フォームのエラー、メールなど、コントローラーや HTTP エンドポイントを検証する場合。
  • KernelTestCase を使用して、実際のデータベースに対するリポジトリやサービスをテストする場合。
  • 認証が必要なルートや特定のロールに制限されたルートを、loginUser() を使ってカバーする場合。
  • 重要な URL に対して、低コストなスモークテストが必要な場合。

デフォルトのワークフロー

  1. 基底クラスを選択します。HTTP には WebTestCase、サービスには KernelTestCase、純粋なロジックには通常の TestCase を使用します。
  2. static::createClient() を直接呼び出し(先に bootKernel() を呼び出さない)、static::getContainer() でプライベートサービスを取得します。
  3. ログインフォームを再送信する代わりに、$client->loginUser($user) で認証します。
  4. レスポンスと DOM をアサートします。assertResponseIsSuccessful()、assertResponseRedirects()、assertSelectorTextContains()、assertEmailCount() を使用します。
  5. DAMADoctrineTestBundle の PHPUnitExtension と、フィクスチャの Foundry リセットを使用してテストを分離します。
  6. データプロバイダーとハードコードした URL を使って、スモークテストを追加します。

ガードレール

  • 実際のデータベースとリポジトリを使用します。データに触れるテストで EntityManager やリポジトリをモックしないでください。
  • 無効なフォーム送信では、assertResponseIsUnprocessable() を使って 422 をアサートします(Symfony 8.0+ の動作)。
  • テスト環境では .env.local は読み込まれません。.env.test または .env.test.local を使用してください。
  • assertSessionHasFlashMessage() には Symfony 8.1+ が必要です。

段階的な情報開示

  • 実行時の方針とリスク管理には、このファイルを使用します。
  • 実装の詳細が必要な場合は、リファレンスを参照してください。

出力要件

  • それぞれに適切な基底クラスを選択したテストクラス。
  • 認証とデータベース分離の方針。
  • 対象とするステータスコード、DOM アサーション、スモークテスト用 URL。

リファレンス

  • reference.md

コメント