[PHP] InvalidArgumentException : Unable to locate factory with name [default]

발단

Laravel Framework로 TDD를 진행중에 Unit Test를 하기 위해 artisan 콘솔을 이용하여 TaskTest 라는 이름의 테스트 클래스를 생성하였습니다.

1
$ php artisan make:test TaskTest --unit

코드는 간단했습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

namespace Tests\Unit;

use App\Project;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\TestCase;

class TaskTest extends TestCase
{
use RefreshDatabase;

/**
* @test
*/
public function it_belongs_to_a_project()
{
$task = factory('App\Task')->create();
$this->assertInstanceOf(Project::class, $task->project);
}
}

해당 테스트를 생성 후 아래와 같이 PHPUnit으로 해당 테스트를 실행하였더니

1
$ ./vendor/bin/phpunit --filter it_belongs_to_a_project

아래 이미지와 같은 에러가 나왔습니다.

InvalidArgumentException : Unable to locate factory with name [default] [App\Task]

과연 무엇이 문제일까 싶어 해당 모델의 migration이 제대로 안된걸까요?

자세히 보기

[Laravel]with() | has() | whereHas() 뭐가 다를까

ORM도 익숙하지 않지만, Eloquent ORM은 처음 접해보면서,

쿼리빌더를 사용하는것은 ORM스럽지 못하다 느껴 최대한 ORM으로 풀고 싶었습니다

검색으로 알아보던중 Eloquent:Relations에 대해 알게되었습니다.

라라벨 공식 문서 : 관계의 존재 여부 쿼리 질의하기

예를들어 User가 여러개의 Post 를 가지고 있다면,

User 클래스에 $this->hasMany('App\Post');를 설정해 두었을 것이라는 가정하에 설명을 진행하도록 하겠습니다.

자세히 보기