Laravel 팩토리[doc]
라라벨에서는 Factory를 통해 Model의 데이터에 가짜(Fake)데이터를 생성해 주는 기능이 존재한다.
이를 통해서 PHPUnit과 같은 Test를 진행할 때 원하는 Type의 데이터가 들어가지는지 테스트 하는 등의 기능을 제공하며,
Database Seeding을 통해 Fake 데이터를 넣어 개발 및 테스트를 조금 더 용이하게 해준다.
UserFactory
<?php
use Faker\Generator as Faker;
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
Laravel에서 기본적으로 설정해 주는 UserFactory를 사용하면factory(User::class)->create()
만으로 Fake 유저를 자동으로 생성해 준다.
만약, factory를 자동으로 User를 생성해 주는 기능과 name이 silnex인 User를 생성해야 한다고 했을때,factory(User::class)->create(['name' => 'silnex'])
과 같이 직접 생성되는 값을 제한 할 수 있다.
하지만, name이 silnex인 값이 필요할때 마다 쓰게된다면 이후 silnex가 아닌 다른 값으로 변경할 때 여러 부분을 만져야한다.
UserFactory With State
<?php
$factory->state(App\User::class, 'static_name', function (Faker $faker) {
return [
'name' => 'silnex',
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
Factory를 선언할 때 'static_name'
과 같은 상태를 주게 되면 factory(User::class)->states('static_name')->create()
로 생성하게 되면 name이 silnex인 결과 값을 불러올 수 있다.