ファクトリの利用 - 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;