【Laravel】factory自動生成ツールlaravel-test-factory-helperの紹介

著者:杉浦

【Laravel】factory自動生成ツールlaravel-test-factory-helperの紹介

mpociot/laravel-test-factory-helper: Generate Laravel test factories from your existing models
 Laravelにはfactoryという機能があります。
データベースのテスト 5.5 Laravel#ファクトリの記述
 次の様にfactoryをdatabase/factories/以下に定義し、

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});
// <a href="https://readouble.com/laravel/5.5/ja/database-testing.html#writing-factories">データベースのテスト 5.5 Laravel#ファクトリの記述</a>より引用

 次の様に呼び出すことでデータを生成し、モデルに代入された状態で使用できます。

public function testDatabase()
{
    $user = factory(App\User::class)->make();

    // モデルをテストで使用…
}

 ダミーの値はfakerというライブラリで生成します。
stympy/faker: A library for generating fake data such as names, addresses, and phone numbers.
 有用なライブラリなのですが様々な値生成方法を選べるためfactoryの定義にも悩みがちです。laravel-test-factory-helperはfactoryを自動生成します。

composer require mpociot/laravel-test-factory-helper

とcomposerで導入。

php artisan test-factory-helper:generate

とartisanを実行。するとモデル定義に従ってデータベースから値を取得、適した型のfakerをつけたfactoryをモデル分全て生成します。

  • この記事いいね! (0)

著者について

杉浦 administrator