Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 299品質スコア 84/100

phpunit

Laravelのフィーチャーテストおよびユニットテストにおける、PHPUnitのテスト構造、命名規則、アサーション、ファクトリーの使用慣例について説明します。

description の原文を見る

PHPUnit test structure, naming, assertions, and factory conventions for Laravel feature and unit tests.

SKILL.md 本文

名前: PHPUnit 説明: PHPUnit のテスト構造、命名規則、アサーション、および Laravel フィーチャーテストとユニットテストのファクトリー規約。 互換エージェント: general-purpose, testing タグ: tests/**/*.php, laravel, php, testing, phpunit, unit-test, feature-test

ルール

  • フィーチャーテストtests/Feature/ に配置し、Tests\TestCase を継承する
  • ユニットテストtests/Unit/ に配置し、PHPUnit\Framework\TestCase を継承する
  • データベースに関わるフィーチャーテストでは常に Illuminate\Foundation\Testing\RefreshDatabase を使用する
  • ユニットテストは Laravel ブートストラップなし — 純粋な PHP テストのみ
  • test_ メソッドプレフィックスにスネークケースの名前を使用する:test_user_can_create_resource
  • すべてのテストメソッドは : void リターンタイプを持つ必要がある
  • 1 つのアサーション関心事あたり 1 つのテストメソッド — テストを焦点を当てた状態に保つ
  • assertEquals よりも assertSame を優先し、厳密な型と値の比較を行う
  • 真偽値だけでなく、具体的な値をアサートする
  • すべての新しいモデルは database/factories/ に対応するファクトリーを持つ必要がある
  • テストではファクトリーを使用し、手動の create() / insert() 呼び出しの代わりに使用する
  • 意味のあるデフォルトファクトリー値を定義し、バリエーションにはステートを使用する

// フィーチャーテスト
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

class InvoiceControllerTest extends TestCase
{
    use RefreshDatabase;

    public function test_user_can_create_invoice(): void
    {
        $user  = User::factory()->create();
        $order = Order::factory()->create(['user_id' => $user->id]);

        $response = $this->actingAs($user)
            ->postJson('/api/invoices', ['order_id' => $order->id]);

        $response->assertStatus(201);
        $this->assertDatabaseHas('invoices', ['order_id' => $order->id]);
    }
}
// ユニットテスト — Laravel ブートストラップなし
use PHPUnit\Framework\TestCase;

class MoneyHelperTest extends TestCase
{
    public function test_formats_amount_in_cents_as_currency_string(): void
    {
        $result = MoneyHelper::format(1000, 'CHF');

        $this->assertSame('10.00 CHF', $result);
    }
}
// ステート付きファクトリー
// database/factories/UserFactory.php
public function unverified(): static
{
    return $this->state(fn (array $attributes) => [
        'email_verified_at' => null,
    ]);
}

// テストでの使用
User::factory()->create();
User::factory()->unverified()->create();

アンチパターン

  • データベースに書き込むフィーチャーテストで RefreshDatabase を使用しない
  • テストで insert() または create() の生の呼び出しの代わりにファクトリーを使用しない
  • 単一のテストメソッドで複数のアサーション関心事を混在させる
  • 厳密な比較が必要な場合に assertEquals を使用する(assertSame を使用すべき)
  • 具体的な値ではなく真偽値をアサートする(assertTrue($result !== null)
  • 完全な Laravel アプリケーションをブートストラップするユニットテスト(フィーチャーテストのみで Tests\TestCase を使用する)

リファレンス

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
majiayu000
リポジトリ
majiayu000/claude-skill-registry
ライセンス
MIT
最終更新
2026/5/4

Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: majiayu000 · majiayu000/claude-skill-registry · ライセンス: MIT