カテゴリ: Laravel 更新日: 2026/07/04

LaravelでAPIエンドポイントのテストを行う方法を完全解説!初心者でも理解できるAPIテスト入門

LaravelでAPIエンドポイントのテストを行う方法
LaravelでAPIエンドポイントのテストを行う方法

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

生徒

「LaravelでAPIって作れるって聞いたんですが、それがちゃんと動くか確認する方法はありますか?」

先生

「はい、APIエンドポイントのテストを書くことで、正しく動作しているかを自動で確認できます。」

生徒

「テストって難しそうですが、初心者でもできますか?」

先生

「基本から順番に覚えれば大丈夫です。シンプルな例で一緒に見ていきましょう。」

1. LaravelのAPIテストとは?

1. LaravelのAPIテストとは?
1. LaravelのAPIテストとは?

LaravelのAPIテストとは、アプリケーションのAPIエンドポイントが正しく動作するかを確認するための仕組みです。APIとは、アプリとアプリをつなぐ窓口のようなもので、例えばスマートフォンアプリがサーバーと通信する際に使われます。

APIエンドポイントとは、その窓口の入り口のことです。例えば「ユーザー一覧を取得するURL」や「データを保存するURL」などが該当します。

テストを使うことで、人の手で毎回確認しなくても、プログラムが自動でチェックしてくれるようになります。これにより、バグの早期発見や品質向上につながります。

2. APIテストの基本的な考え方

2. APIテストの基本的な考え方
2. APIテストの基本的な考え方

APIテストでは、主に次のような内容を確認します。

  • 正しいステータスコードが返ってくるか
  • 期待したデータが返ってくるか
  • エラー時の挙動が正しいか

ステータスコードとは、サーバーからの返事の種類を示す数字です。例えば200は成功、404は見つからないという意味です。

イメージとしては、レストランで注文した料理が正しく届くか、間違っていないかを確認するようなものです。

3. テストファイルの作成方法

3. テストファイルの作成方法
3. テストファイルの作成方法

Laravelでは、コマンドを使って簡単にテストファイルを作成できます。


php artisan make:test UserApiTest

このコマンドを実行すると、testsフォルダ内にテストファイルが作成されます。Featureテストとして作成されるため、実際のHTTPリクエストに近い形でテストができます。

Featureテストとは、アプリ全体の動きを確認するテストのことです。

4. GETリクエストのテスト方法

4. GETリクエストのテスト方法
4. GETリクエストのテスト方法

まずは、データを取得するAPIのテストを書いてみましょう。


public function test_user_list_api()
{
    $response = $this->get('/api/users');

    $response->assertStatus(200);
}

このコードでは、/api/usersにアクセスして、ステータスコードが200かどうかを確認しています。

getメソッドはHTTPのGETリクエストを送るためのものです。assertStatusは結果の検証です。


テスト成功

5. JSONレスポンスの確認方法

5. JSONレスポンスの確認方法
5. JSONレスポンスの確認方法

APIでは、データはJSON形式で返されることが多いです。JSONとは、データを扱いやすくした形式です。


public function test_user_json_structure()
{
    $response = $this->get('/api/users');

    $response->assertStatus(200)
             ->assertJsonStructure([
                 '*' => ['id', 'name', 'email']
             ]);
}

assertJsonStructureを使うことで、返ってくるデータの形が正しいか確認できます。

配列の中にidやnameがあるかチェックするイメージです。

6. POSTリクエストのテスト方法

6. POSTリクエストのテスト方法
6. POSTリクエストのテスト方法

次に、データを登録するAPIのテストです。


public function test_create_user()
{
    $data = [
        'name' => 'Taro',
        'email' => 'taro@example.com',
        'password' => 'password'
    ];

    $response = $this->post('/api/users', $data);

    $response->assertStatus(201);
}

postメソッドを使うことで、新しいデータを送信できます。

201は作成成功を意味するステータスコードです。

7. データベースの確認方法

7. データベースの確認方法
7. データベースの確認方法

APIでデータを登録したあと、本当にデータベースに保存されているか確認することも重要です。


public function test_user_saved_in_database()
{
    $data = [
        'name' => 'Hanako',
        'email' => 'hanako@example.com',
        'password' => 'password'
    ];

    $this->post('/api/users', $data);

    $this->assertDatabaseHas('users', [
        'email' => 'hanako@example.com'
    ]);
}

assertDatabaseHasを使うことで、指定したデータが存在するか確認できます。

これは、実際にデータが保存されているかチェックする大切なポイントです。

8. エラー時のテスト方法

8. エラー時のテスト方法
8. エラー時のテスト方法

正しい動作だけでなく、エラー時の動作もテストすることが重要です。


public function test_validation_error()
{
    $response = $this->post('/api/users', []);

    $response->assertStatus(422);
}

422はバリデーションエラーを意味します。バリデーションとは、入力チェックのことです。

例えば、名前が空の場合にエラーになるかを確認できます。

9. APIテストを行うメリット

9. APIテストを行うメリット
9. APIテストを行うメリット

APIテストを導入することで、開発の効率が大きく向上します。毎回ブラウザやツールで確認する手間がなくなり、自動で品質チェックができます。

また、仕様変更があった場合でも、テストがあることで影響範囲をすぐに確認できます。

初心者のうちからテストを書く習慣をつけることで、安定したアプリケーションを作れるようになります。

カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのサービスとは?役割と基本概念を初心者向けにやさしく解説
New2
Laravel
Laravelでリダイレクトやフラッシュメッセージをテストする方法を完全解説!初心者向けLaravelテスト入門
New4
CodeIgniter
CodeIgniterのセキュリティ対策を完全ガイド!初心者が守るべき基本設定
人気記事
No.2
Java&Spring記事人気No2
Laravel
LaravelでReactコンポーネントを組み込む方法完全ガイド!JSX対応でフロントエンド連携を学ぼう
No.3
Java&Spring記事人気No3
Laravel
LaravelのRESTfulコントローラ設計のベストプラクティスを初心者向けにわかりやすく解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのold()関数でフォーム再表示時に値を保持する方法
No.5
Java&Spring記事人気No5
Symfony
Symfonyのインストール方法!CLIとComposerの導入手順まとめ
No.6
Java&Spring記事人気No6
Laravel
LaravelをDockerで動かすメリットと導入の全体像を徹底解説!初心者向け入門ガイド
No.7
Java&Spring記事人気No7
Symfony
Symfonyでバリデーションをコントローラに組み込む方法を徹底解説!初心者にもやさしい入力チェックの基本
No.8
Java&Spring記事人気No8
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方