Factory can't be seen in unit test.

Factory can't be seen in unit test.

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.

Nakov
Level 50
Nakov 3 months ago
 

@catalinul Ah, I see I believe you have the wrong import for the parent class.

Use this

use Tests\TestCase;

instead of

use PHPUnit\Framework\TestCase;

as the first one is where Laravel does all it's startup.

猜你喜欢

转载自www.cnblogs.com/mouseleo/p/12693817.html