on
라라벨 모델 팩토리
라라벨 모델 팩토리
모델 팩토리
프로젝트를 진행하다 보면 테스트를 위한 데이타가 필요한 때가 있다.
성능 테스트를 위해 대규모의 중복되지 않은 데이터
작성한 쿼리 로직이 잘 동작하는지 확인하기 위해 다양한 검색 조건을 사용할 수 있도록 고르게 분포된 데이터
페이징 및 뷰 단에서 데이타가 잘 표시되는지 확인
이런 테스트 데이터는 실제 데이터와 비슷하게 의미있어야 합니다. 즉 만드는 서비스가 전 세계 우편 번호를 저장하고 검색하는 기능이 있다면 테스트 데이터를 이를 반영하여 전 세계의 실제 우편 번호를 고르게 삽입해야 한다.
이렇게 의미있는 테스트 데이터를 만드는 것은 매우 중요하지만 개발 단계에서 개발과 테스트 용도로만 필요하므로 실제로 시간을 많이 쓸 수는 없다.
이런 문제를 해결하기 위해 의미있는 테스트 데이터를 만들어주는 Faker(https://github.com/fzaninotto/Faker) 라는 유명한 PHP 라이브러리가 있고 개발 단계에서 유용하게 사용할 수 있다.
모델 팩토리(Model Factory)는 라라벨 5 에 추가된 기능으로 Faker 라이브러리를 사용하여 Model 클래스에서 바로 테스트 데이터를 만들수 있는 기능으로 손쉽게 데이타를 생성하고 입력할 수 있다.
php artisan tinker 에 명령어들 입력
factory(\App\User:class)->create(); 명령으로 테스트 데이터를 만들 수 있다.
factory(\App\User:class,3)-create(); factory(\App\User:class,5)-create(); 와 같이 모델명:class 뒤에 숫자를 넣어 갯수를 지정 할 수 있다. Aaliyah Effertz 라는 임의로 생성된 테스트 데이터를 확인 할 수 있다.
User::all()->pluck('name'); 명령어로 데이터를 확인( pluck 메소드는 주어진 키에 대한 모든 값을 반환 )
추가된 테스트 데이터의 이름을 확인 할 수 있다
factory(\App\User:class,3)-create(); 명령어로 3개의 데이터를 더집어 넣고 다시 확인
추가된 데이터들을 확인할 수 있다.
다음은 테스트용 회사 데이터를 넣기위해 CompanyFactory 를 Company 모델을 참조해 생성
php artisan make:factory CompanyFactory -m Company
database\factories에 생성된 ComapnyFactory를 확인
필요한 속성들을 지정해야 하는데 쉬운방법은 마이그레이션을 참조하면 된다.
날짜_create_companies_table.php 마이그레이션 참조 ( 예전에 company 모델 만들때 생성했던 마이그레이션)
그러면 name과 ,phone 속성을 지정해주면 되겠다는 걸 알 수 있다. 추가하자
php artisan tinker를 실행해서 데이터를 이제 집어 넣자
Company에 추가된 부분을 확인 할 수 있다.
CompanyFactory 부분의 name을 company로 바꿔준다. 우린 회사이름이 필요하기때문 name은 사람이름이다
php artisan tinker로 돌아와서
factory(\App\Company::class,6)->create(); 실행-> 이번엔 6개 데이터를 집어넣자
필요한 테스트용 데이터를 이런식으로 넣을 수 있다.
from http://seop0822.tistory.com/14 by ccl(A) rewrite - 2020-04-02 11:00:43