ファクトリの利用 - d-sazanami/laravel-jissenkaihatsu-v1 GitHub Wiki

本との差異

artisanでのファクトリ・クラスの生成でできるクラス構造が、Laravelバージョンが本の方が古くて使えない。 https://readouble.com/laravel/8.x/ja/database-testing.html の使い方をする必要がある。

現象

ファクトリ・クラスをreadouble.comの通り実装して、PHPUnitを実行するだけでは、以下の通りエラーとなる。

# vendor/bin/phpunit 
PHPUnit 9.5.16 by Sebastian Bergmann and contributors.

..E                                                                 3 / 3 
(100%)

Time: 00:17.891, Memory: 30.00 MB

There was 1 error:

1) Tests\Feature\ExampleTest::testBasicTest
BadMethodCallException: Call to undefined method App\Models\Person::factory()

/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:71
/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:36
/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2132
/var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:2144
/var/www/html/tests/Feature/ExampleTest.php:30

ERRORS!
Tests: 3, Assertions: 2, Errors: 1.

対応

Personモデル・クラスでファクトリが使えるように指定を入れる

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Person extends Model
{
    use HasFactory;

ref