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

Laravelの認証・認可を含むテストケースの書き方を完全解説!初心者でも安心

Laravelの認証・認可を含むテストケースの書き方
Laravelの認証・認可を含むテストケースの書き方

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

生徒

「Laravelでテストを書くときに、ログインしているかどうかも確認できるんですか?」

先生

「できますよ。Laravelでは認証や認可を含めたテストも、とても簡単に書けるようになっています。」

生徒

「まだパソコン操作も不安なんですが、大丈夫でしょうか?」

先生

「画面を操作するイメージで考えれば大丈夫です。順番に一つずつ見ていきましょう。」

1. Laravelのテストとは何か?

1. Laravelのテストとは何か?
1. Laravelのテストとは何か?

Laravelのテストとは、アプリケーションが正しく動いているかを自動で確認する仕組みです。人が毎回画面を開いて確認する代わりに、プログラムが代わりにチェックしてくれます。例えば「ログインできるか」「ログインしていない人が入れないページにアクセスできないか」といったことを確認できます。テストを書くことで、修正や追加をしても安心して開発を進められるようになります。

2. 認証と認可の違いをやさしく理解しよう

2. 認証と認可の違いをやさしく理解しよう
2. 認証と認可の違いをやさしく理解しよう

認証とは「あなたは誰ですか?」を確認する仕組みです。ログイン画面でメールアドレスとパスワードを入力する行為がこれにあたります。一方で認可とは「その人は何をしてよいですか?」を決める仕組みです。例えば、管理者だけが見られるページがある場合、それが認可です。家に例えると、玄関で本人確認をするのが認証、入れる部屋を決めるのが認可になります。

3. テスト前の基本準備

3. テスト前の基本準備
3. テスト前の基本準備

Laravelでは最初からテスト環境が整っています。テストは「tests」フォルダの中に書きます。多くの場合、画面の動きを確認するテストは「Feature」フォルダに作ります。テストは本番のデータを使わず、テスト専用の環境で動くため、失敗しても安心です。これにより、初心者でも気軽に試すことができます。

4. ログインしていない状態をテストする方法

4. ログインしていない状態をテストする方法
4. ログインしていない状態をテストする方法

まずはログインしていない人がアクセスした場合のテストです。Laravelでは画面を開く操作もテストで再現できます。ログインしていない状態でページを開き、ログイン画面に移動するかを確認します。


public function test_guest_cannot_access_dashboard()
{
    $response = $this->get('/dashboard');
    $response->assertRedirect('/login');
}

このコードでは、ログインしていない人がダッシュボードに入ろうとすると、ログイン画面へ移動することを確認しています。

5. ログイン済みユーザーのテストを書く

5. ログイン済みユーザーのテストを書く
5. ログイン済みユーザーのテストを書く

次に、ログインしている状態を作る方法です。Laravelでは「ユーザーを用意してログインさせる」処理を簡単に書けます。これは実際にログイン操作をするのではなく、ログインしたことにする仕組みです。


public function test_user_can_access_dashboard()
{
    $user = User::factory()->create();
    $response = $this->actingAs($user)->get('/dashboard');
    $response->assertStatus(200);
}

actingAsは「このユーザーでログインしている状態」を作る命令です。画面を操作する感覚で理解すると分かりやすいです。

6. 認可を含めたテストの考え方

6. 認可を含めたテストの考え方
6. 認可を含めたテストの考え方

認可のテストでは、権限がある人とない人の違いを確認します。例えば管理者だけがアクセスできるページを用意し、一般ユーザーでは入れないことをテストします。これにより、誤って誰でも操作できる状態になるのを防げます。


public function test_non_admin_cannot_access_admin_page()
{
    $user = User::factory()->create(['is_admin' => false]);
    $response = $this->actingAs($user)->get('/admin');
    $response->assertStatus(403);
}

403は「許可されていない」という意味の番号です。数字は難しく見えますが、「入れません」という合図だと覚えれば十分です。

7. 管理者ユーザーの認可テスト

7. 管理者ユーザーの認可テスト
7. 管理者ユーザーの認可テスト

反対に、権限を持つユーザーが正しく操作できるかも確認します。同じ画面でも、ユーザーの立場によって結果が変わることをテストで表現します。


public function test_admin_can_access_admin_page()
{
    $admin = User::factory()->create(['is_admin' => true]);
    $response = $this->actingAs($admin)->get('/admin');
    $response->assertStatus(200);
}

このように、同じURLでもユーザーの条件を変えて確認するのがポイントです。

8. 認証・認可テストを書くメリット

8. 認証・認可テストを書くメリット
8. 認証・認可テストを書くメリット

認証や認可を含めたテストを書くことで、セキュリティ面のミスを防げます。画面が増えても、テストがあれば自動で確認できるため安心です。初心者のうちからテストを書く習慣をつけることで、後から修正する手間が減り、安定したLaravelアプリケーションを作れるようになります。

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