<?php
namespace TestsUnit;
use IlluminateFoundationTestingRefreshDatabase;
use PHPUnitFrameworkTestCase;
class CourseTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function a_course_belongs_to_a_teacher() {
$course = factory(AppCourse::class, 1)->create();
//$this->assertInstanceOf(AppCourse::class, $course->teacher);
}
}
This is the error I receive InvalidArgumentException: Unable to locate factory with name [default] [AppCourse].
Factory can't be seen in unit test.
This is how my ModelFactory.php looks:
<?php /** @var IlluminateDatabaseEloquentFactory $factory */ use AppUser; use FakerGenerator as Faker; use IlluminateSupportStr; $factory->define(User::class, function (Faker $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'email_verified_at' => now(), 'password' => 'yIXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'remember_token' => Str::random(10), ]; }); $factory->define(AppCourse::class, function (Faker $faker) { return [ 'user_id' => function () { return (factory(User::class)->create())->id; }, 'name' => $faker->sentence, 'short_description' => $faker->sentence(20), 'description' => $faker->paragraph(10), 'seats' => random_int(0, 10), 'expiry_date' => $faker->dateTimeBetween('+0 days', '+3 months'), ]; });
And this is how my unit test looks:
<?php namespace TestsUnit; use IlluminateFoundationTestingRefreshDatabase; use PHPUnitFrameworkTestCase; class CourseTest extends TestCase { use RefreshDatabase; /** @test */ public function a_course_belongs_to_a_teacher() { $course = factory(AppCourse::class, 1)->create(); //$this->assertInstanceOf(AppCourse::class, $course->teacher); } }
This is the error I receive
InvalidArgumentException: Unable to locate factory with name [default] [AppCourse].
I can't understand why, any help is appreciated.