ユアスク by みんなシステムズ

MENU

一瞬でできる!Laravel Factoryでテストデータを作成する

2023/08/02

こんにちは、後藤です。

ウェブアプリケーションを作るにあたって、いろんなパターンのテストデータが作れると便利だなぁと最近よく感じます。

LaravelのFactoryは、テストデータ作成のスピードを格段にアップさせる強力なツールです。今回は、一緒に実際にブログポストのテストデータを作成してみましょう!データベースのマイグレーションについては事前に設定されているものとして進めます。

Factoryの作成

まずは、Factoryを作るのですが、今回はブログポストを表現するPostモデルを例に挙げます。下記のコマンドを実行します。

php artisan make:factory PostFactory --model=Post

このコマンドを打つと、database/factoriesディレクトリ内にPostFactory.phpが作成されます。--model=Postの部分は、Factoryがどのモデルに関連するものなのかをLaravelに伝えます。

Factoryの定義

それでは、次に作成したFactoryの定義をします。database/factories/PostFactory.phpを開きましょう。以下のような内容が初期設定で書かれているはずです。

namespace Database\Factories;

use App\Models\Post;
use Illuminate\Database\Eloquent\Factories\Factory;

class PostFactory extends Factory
{
    protected $model = Post::class;

    public function definition()
    {
        return [
            //
        ];
    }
}

definitionメソッド内で、ダミーデータの定義を行います。今回は、titlecontentという2つのフィールドにランダムな値を設定しましょう。

public function definition()
{
    return [
        'title' => $this->faker->sentence,
        'content' => $this->faker->paragraph,
    ];
}

ここで出てきた$this->fakerは、Fakerというライブラリで、様々なランダムデータを生成してくれます。詳細は公式ドキュメントを参照してください。

テストデータの生成

最後に、Factoryを使ってテストデータを生成します。ターミナルからtinkerを起動し、以下のように実行します。

php artisan tinker
Post::factory()->create();

これを実行すると、新たなPostレコードがデータベースに追加され、そのデータが表示されます。また、複数のレコードを一度に作成したい場合は、countメソッドを使います。

Post::factory()->count(3)->create();

以上が、LaravelのFactoryを使ったテストデータの作成方法です。

まとめ

繰り返しテストを行う際など、手軽に大量のテストデータを生成できるFactoryは非常に便利なツールです。ぜひ、この機能を活用して、効率的な開発を行ってください!