カテゴリ: 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
Laravel
Laravelのコントローラでリクエストをログ出力する方法を初心者向けに解説
New2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
New3
Symfony
Symfonyのセッション管理完全ガイド!初心者でもわかるセッションドライバ設定(file・Redis)
New4
Laravel
Laravelのエラーメッセージをカスタマイズする方法|初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.2
Java&Spring記事人気No2
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.3
Java&Spring記事人気No3
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.4
Java&Spring記事人気No4
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.5
Java&Spring記事人気No5
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.8
Java&Spring記事人気No8
Laravel
LaravelのテストでCSRFやセッションの扱いをやさしく理解しよう!初心者向け完全ガイド