
テストファイル実行時にfactoryエラー
Class "Database\Factories\OperatorFactory" not found
がテスト実行時に出てしまう場合。
該当のFactoryファイル自体が存在しない可能性が高い。
単純にモデルをuseしていないだけとかそういう話ではない。
プロジェクトディレクトリ/tests/Feature/InquiriesTest.php
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use App\Models\Inquiry;
use App\Models\Operator;//必要
use Illuminate\Foundation\Testing\DatabaseTransactions;//テストで投稿したダミーデータを無かったことにしてくれる
class InquiriesTest extends TestCase
{
use DatabaseTransactions; //テストで投稿したダミーデータを無かったことにしてくれる
//ダミーデータを作れる場所
public function setUp(): void
{
parent::setUp();
$inquiruy = new Inquiry; //factoryを読み込み
$operator = new Operator; //factoryを読み込み
$inquiruy->factory()->create(
[
'id' => 1,
'type' => 'NASサーバー',//null不許可カラム
'question' => 'あいうえお',//null不許可カラム
'operator_id' => '1',//null不許可カラム
'inquiry_id' => 'a',//null不許可カラム
'answer' => 'かきくけこ',//null不許可カラム
]
);
//テスト用のダミーユーザの作成
$operator->factory()->create(
[
"name" => "auth_test_user",
"email" => "test@aaa.com",
"password" => bcrypt('auth_test_password'),
]
);
}
$operator = new Operator; //factoryを読み込み
とあるからにはOperatorfactory.phpがあるはずだよな?
下記のファイルを作成して解決。
\プロジェクトディレクトリ\backend\database\factories\OperatorFactory.php
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\Operator;
class OperatorFactory extends Factory
{
protected $model = Operator::class;
public function definition()
{
return [
//何も書かない
];
}
}
今回は手打ちで作ったけど、
php artisan make:factory OperatorFactory
ってコマンドを実行したら1発で作成されると思う。