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

Laravelでデータベースを使ったテストを行う方法を完全解説!RefreshDatabaseで安心テスト入門

Laravelでデータベースを使ったテストを行う方法(`RefreshDatabase`)
Laravelでデータベースを使ったテストを行う方法(`RefreshDatabase`)

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

生徒

「Laravelでデータを保存する処理を作ったんですが、ちゃんとデータベースに入っているか不安です…」

先生

「それなら、データベースを使ったテストを行うと確認できますよ。」

生徒

「テストでデータベースを使うと、データが増えてしまいませんか?」

先生

「Laravelには、テストのたびにデータをきれいにしてくれる仕組みがあります。それがRefreshDatabaseです。」

1. Laravelのデータベーステストとは?

1. Laravelのデータベーステストとは?
1. Laravelのデータベーステストとは?

Laravelのデータベーステストとは、実際にデータベースへ保存や取得を行いながら確認するテストのことです。画面表示だけでなく、裏側で正しくデータが扱われているかをチェックできます。

これは、家計簿にお金を書いたあと、本当に合計金額が合っているかを確認する作業に似ています。見た目だけでなく、中身も正しいかを確認するのがポイントです。

2. RefreshDatabaseとは何か

2. RefreshDatabaseとは何か
2. RefreshDatabaseとは何か

RefreshDatabaseは、Laravelのテスト用機能の一つで、テストを実行するたびにデータベースを初期状態に戻してくれます。

テストのたびに机の上を片付けてから作業を始めるようなイメージです。前回のデータが残らないため、毎回同じ条件でテストできます。

3. RefreshDatabaseの基本的な使い方

3. RefreshDatabaseの基本的な使い方
3. RefreshDatabaseの基本的な使い方

RefreshDatabaseは、テストクラスで読み込むだけで使えます。


use Illuminate\Foundation\Testing\RefreshDatabase;

class UserTest extends TestCase
{
    use RefreshDatabase;
}

この一行を追加するだけで、テスト前後にデータベースが自動でリセットされます。

4. データを保存するテストの例

4. データを保存するテストの例
4. データを保存するテストの例

次に、データが正しく保存されるかをテストしてみます。ここでは、ユーザー情報を保存する例です。


public function test_user_can_be_created()
{
    $this->post('/users', [
        'name' => '山田太郎',
        'email' => 'test@example.com'
    ]);

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

assertDatabaseHasは、「指定したデータがデータベースに存在するか」を確認する命令です。名簿に名前が載っているかを確認する感覚です。

5. データが存在しないことを確認する

5. データが存在しないことを確認する
5. データが存在しないことを確認する

反対に、データが保存されていないことを確認したい場合もあります。


public function test_user_is_not_saved()
{
    $this->assertDatabaseMissing('users', [
        'email' => 'no-data@example.com'
    ]);
}

assertDatabaseMissingは、「そのデータが存在しない」ことを確認します。不要なデータが入っていないかを確認するチェックです。

6. テストごとにデータが消える仕組み

6. テストごとにデータが消える仕組み
6. テストごとにデータが消える仕組み

RefreshDatabaseを使うと、テストが終わるたびにデータベースが空になります。これにより、テスト同士が影響し合うことを防げます。

毎回新品のノートを使って練習するような状態なので、前の書き込みに惑わされることがありません。

7. 初心者におすすめな理由

7. 初心者におすすめな理由
7. 初心者におすすめな理由

データベースを使ったテストは難しそうに感じますが、RefreshDatabaseを使えば安心して始められます。実際の動作に近い形で確認できるため、「動いているつもり」を防げます。

特に初心者の方にとっては、目に見えないデータの動きを確認できるのが大きな助けになります。

8. LaravelテストとRefreshDatabaseの重要性

8. LaravelテストとRefreshDatabaseの重要性
8. LaravelテストとRefreshDatabaseの重要性

Laravelでデータベーステストを行うことは、アプリの信頼性を高める大切な作業です。RefreshDatabaseを使えば、毎回きれいな状態でテストでき、安心して開発を進められます。

失敗を恐れずに試せる環境を作ることが、学習を続けるうえでの大きな支えになります。

関連記事:
カテゴリの一覧へ
新着記事
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
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.7
Java&Spring記事人気No7
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.8
Java&Spring記事人気No8
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)