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をモデル分全て生成します。