laravel:tdd-with-pest について
Laravel で Pest または PHPUnit を使ったテスト駆動開発を行うためのスキルです。失敗するテスト、最小限の実装、リファクタリングの手順とテストの指針を説明します。
主な機能
- 01失敗から始める TDD サイクル
- 02Pest または PHPUnit のテストランナー
- 03ファクトリーと Seeder によるテストデータ作成
- 04機能テストとユニットテストの指針
- 05決定的なテストの実践
活用シーン
- 01失敗するテストから本番コードの変更を始める
- 02HTTP の動作や純粋なサービスをテスト
- 03現実的で再現可能なテストを維持
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jpcaparas/ superpowers-laravel --skill laravel:tdd-with-pestインストール後、Claude Code で/laravel:tdd-with-pestを入力して読み込まれたか確認します。
詳細
Laravel TDD(Pest/PHPUnit)
まずテストを書きます。失敗することを確認します。合格する最小限のコードを書きます。テストは高速で現実的なものに保ちます。
テストランナー
# Sail
sail artisan test --parallel
# Non-Sail
php artisan test --parallel
新しい Laravel アプリでは、Pest(デフォルト)をおすすめします。プロジェクトで PHPUnit を使っている場合は、PHPUnit でも問題ありません。
RED – 失敗するテストを書く
- モデルファクトリーを使い、重いモックは避けます
- HTTP/コントローラーにはフィーチャーテストを、純粋なサービスにはユニットテストを使います
- 振る舞いがわかる名前をテストに付けます
例(フィーチャーテスト):
it('rejects empty email on signup', function () {
$response = $this->post('/register', [
'name' => 'Alice',
'email' => '',
'password' => 'secret',
'password_confirmation' => 'secret',
]);
$response->assertSessionHasErrors('email');
});
実行して、正しい理由で失敗することを確認します。
GREEN – 最小限の実装
失敗するテストに合格する、最もシンプルなコードを書きます。余計なものは追加しません。リファクタリングもしません。
REFACTOR – 整理する
重複をなくし、名前をわかりやすくし、小さなサービスを切り出します。テストがすべて成功する状態を保ちます。
ガイドライン
- 本番コードの変更はすべて、失敗するテストから始めます
- 失敗を確認し、失敗する段階を決して飛ばしません
- 現実的なデータにはファクトリー/シーダーを使います
- 必要に応じて、テストでは DB トランザクションまたはリフレッシュを使います
- テストを決定論的に保ち、非同期処理ではスリープを避けます
行き詰まったとき
- テストを書くのが難しい場合は、設計の結合度が高すぎます。サービスまたはポートを切り出します
- 依存性注入を優先し、静的/グローバルな状態は避けます
コメント
Markdown 対応