This is how my ModelFactory.php looks:
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Faker\Generator as Faker;
use Illuminate\Support\Str;
$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(\App\Course::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 Tests\Unit;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\TestCase;
class CourseTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function a_course_belongs_to_a_teacher() {
$course = factory(\App\Course::class, 1)->create();
//$this->assertInstanceOf(\App\Course::class, $course->teacher);
}
}
This is the error I receive InvalidArgumentException: Unable to locate factory with name [default] [App\Course].
I can't understand why, any help is appreciated.