カテゴリ: Laravel 更新日: 2026/01/03

Laravelで自作ミドルウェアのテストを書く方法(Feature Test入門)

Laravelで自作ミドルウェアのテストを書く方法(Feature Test)
Laravelで自作ミドルウェアのテストを書く方法(Feature Test)

先生と生徒の会話形式で理解しよう

生徒

「先生、自作したLaravelのミドルウェアが正しく動いているかテストしたいんですが、どうすればいいですか?」

先生

「LaravelではFeature Testを使って、自作ミドルウェアを簡単にテストできます。Feature Testは、HTTPリクエストを送ってレスポンスや動作を確認するためのテスト方法です。」

生徒

「HTTPリクエストって、ブラウザでアクセスする操作のことですか?」

先生

「そうです。Feature Testでは、ブラウザでアクセスするのと同じようにリクエストをPHPコードで送って、ミドルウェアの動作やルートの応答を確認できます。」

1. ミドルウェアテストの基本

1. ミドルウェアテストの基本
1. ミドルウェアテストの基本

Laravelのミドルウェアは、リクエストを受け取ったときに実行される処理です。例えば、アクセス制限や認証処理、IP制限などがあります。Feature Testでは、ミドルウェアが正しくリクエストを通すか、拒否するかをテストできます。

テストは tests/Feature ディレクトリに作成し、php artisan make:test コマンドで新しいテストファイルを作ります。自作ミドルウェア用のテストも同じ手順です。

2. テストの作成手順

2. テストの作成手順
2. テストの作成手順

例えば、CheckAgeMiddleware という、自作ミドルウェアがあるとします。これは、年齢が18歳未満ならアクセスを拒否するものです。Feature Testで以下の手順を行います。

まず、ターミナルでテストファイルを作成します。


php artisan make:test CheckAgeMiddlewareTest

これで tests/Feature/CheckAgeMiddlewareTest.php が作成されます。

3. テストコードの例

3. テストコードの例
3. テストコードの例

次に、実際にFeature Testのコードを書きます。assertStatus はHTTPステータスコードを確認するためのメソッドです。


namespace Tests\Feature;

use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;

class CheckAgeMiddlewareTest extends TestCase
{
    public function test_access_allowed_for_adult()
    {
        $response = $this->withHeaders([
            'AGE' => 20
        ])->get('/restricted');

        $response->assertStatus(200);
    }

    public function test_access_denied_for_minor()
    {
        $response = $this->withHeaders([
            'AGE' => 15
        ])->get('/restricted');

        $response->assertStatus(403);
    }
}

上記の例では、withHeaders メソッドを使ってHTTPリクエストヘッダーに年齢情報を渡しています。18歳以上なら200(成功)、未満なら403(禁止)になることを確認しています。

4. テスト実行方法

4. テスト実行方法
4. テスト実行方法

テストはターミナルから以下のコマンドで実行できます。


php artisan test --filter=CheckAgeMiddlewareTest

結果が緑色なら全てのテストが成功、赤色なら失敗です。失敗した場合は、ミドルウェアの処理やルート設定を確認しましょう。

5. テストのポイント

5. テストのポイント
5. テストのポイント

Feature Testでミドルウェアをテストする際のポイントは以下です。

  • HTTPステータスコードでリクエストの成功・失敗を確認する
  • 必要に応じてリクエストヘッダーやパラメータを指定する
  • ルートがミドルウェアに正しく通っているかを意識する
  • 異常系テストも作成して、拒否処理や例外処理が動作するか確認する

Feature Testは、ブラウザで動作を確認する前に自動でチェックできるため、開発効率や品質向上に非常に役立ちます。

6. まとめ的なポイント

6. まとめ的なポイント
6. まとめ的なポイント

Laravelで自作ミドルウェアのFeature Testを書くと、HTTPリクエストに対してミドルウェアが正しく動作するかを自動で確認できます。assertStatuswithHeaders を活用することで、様々な条件をテストでき、品質の高いAPIやアプリケーションの開発が可能になります。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)