カテゴリ: Laravel 更新日: 2026/02/23

Laravelでバリデーションをテストする方法を完全解説!初心者でも安心のLaravelテスト入門

Laravelでバリデーションをテストする方法
Laravelでバリデーションをテストする方法

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

生徒

「Laravelで入力チェックをしたんですが、それが正しく動いているか確認する方法はありますか?」

先生

「ありますよ。Laravelではテスト機能を使って、バリデーションが正しく動作しているかを確認できます。」

生徒

「テストって難しそうなイメージがあります…。」

先生

「大丈夫です。画面操作を自動で確認するような感覚なので、順番に見ていきましょう。」

1. Laravelのバリデーションテストとは?

1. Laravelのバリデーションテストとは?
1. Laravelのバリデーションテストとは?

Laravelのバリデーションテストとは、フォームなどから送られてくる入力内容が正しいかどうかを自動で確認する仕組みです。バリデーションとは「入力チェック」のことで、名前が空でないか、メールアドレスの形になっているかなどを確認します。

テストは、人が毎回画面を操作して確認する代わりに、プログラムが自動で確認してくれる仕組みです。料理で例えると、味見を毎回しなくても、分量が正しければ同じ味になると確認するようなものです。

2. Laravelでテストを書く準備

2. Laravelでテストを書く準備
2. Laravelでテストを書く準備

Laravelには最初からテスト機能が用意されています。特別なインストールは不要で、プロジェクトを作成した時点で使える状態です。テスト用のファイルはtestsフォルダにまとめられています。

今回は、画面の動きを確認するFeatureテストを使います。Featureテストとは、実際にページにアクセスするような形で確認するテストです。

3. シンプルなバリデーションの例

3. シンプルなバリデーションの例
3. シンプルなバリデーションの例

まずは、名前が必須であるバリデーションを設定した例です。必須とは「必ず入力してください」という意味です。


$request->validate([
    'name' => 'required'
]);

この設定では、名前が空の場合にエラーになります。この動作をテストで確認します。

4. バリデーションエラーをテストする方法

4. バリデーションエラーをテストする方法
4. バリデーションエラーをテストする方法

次に、名前を入力しなかった場合にエラーになるかをテストします。テストでは、わざと空のデータを送信します。


public function test_name_is_required()
{
    $response = $this->post('/register', [
        'name' => ''
    ]);

    $response->assertSessionHasErrors('name');
}

assertSessionHasErrorsは、「エラーがあるか」を確認する命令です。学校のテストで赤ペンが入っているかを見るようなイメージです。

5. 正しい入力のテスト方法

5. 正しい入力のテスト方法
5. 正しい入力のテスト方法

エラーだけでなく、正しく入力した場合に問題なく進めるかも確認します。これは「成功パターン」のテストです。


public function test_register_success()
{
    $response = $this->post('/register', [
        'name' => '山田太郎'
    ]);

    $response->assertSessionDoesntHaveErrors();
}

assertSessionDoesntHaveErrorsは、「エラーが一つもない」ことを確認します。問題なく提出できたかを確認するような感覚です。

6. 複数のバリデーションをテストする

6. 複数のバリデーションをテストする
6. 複数のバリデーションをテストする

実際のフォームでは、複数の入力項目をチェックします。例えば、名前とメールアドレスを確認する場合です。


$request->validate([
    'name' => 'required',
    'email' => 'required|email'
]);

emailは、メールアドレスの形かどうかを確認するルールです。封筒に正しい住所が書かれているか確認するようなものです。

7. 複数エラーのテスト例

7. 複数エラーのテスト例
7. 複数エラーのテスト例

名前もメールも未入力の場合、両方でエラーになるかをテストします。


public function test_multiple_validation_errors()
{
    $response = $this->post('/register', []);

    $response->assertSessionHasErrors(['name', 'email']);
}

配列で指定することで、複数のエラーをまとめて確認できます。

8. Laravelでバリデーションテストを行うメリット

8. Laravelでバリデーションテストを行うメリット
8. Laravelでバリデーションテストを行うメリット

Laravelでバリデーションをテストすることで、入力ミスによる不具合を事前に防げます。修正のたびに画面を操作しなくても、自動で確認できるため、作業効率も向上します。

特に初心者の方にとっては、「正しく動いている」という安心感を得られるのが大きなメリットです。毎回同じ確認をしてくれる、信頼できるチェック役がいるようなものです。

関連記事:
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティングの基本を完全ガイド!YAML・PHP・アノテーションの違いもわかりやすく解説
New2
Laravel
LaravelでAPIのレスポンスをテストする方法を完全解説!assertJsonで初心者も安心
New3
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New4
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.2
Java&Spring記事人気No2
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.3
Java&Spring記事人気No3
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.4
Java&Spring記事人気No4
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.5
Java&Spring記事人気No5
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.7
Java&Spring記事人気No7
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.8
Java&Spring記事人気No8
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方