Laravel 5.7 Не удалось найти фабрику с именем [по умолчанию] [App\User]

Что происходит с фабриками Laravel 5.7? Когда я запускаю фабрику на php artisan tinker, она работает нормально. Но когда я использую его с модульными тестами, он выдает ошибку:

Unable to locate factory with name [default] [App\User]

Вот мой модульный тест

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use \App\User;

class UserTest extends TestCase
{
    use DatabaseTransactions;

    public function setUp()
    {
        $this->user = factory(User::class, 1)->create()->first();
    }

    /**
     * @test
     */
    public function a_sample_test()
    {
        $this->assertTrue(!empty($this->user));

    }
}

И UserFactory был сгенерирован запуском php artisan make:factory UserFactory --model=User

Это моя фабрика для пользователя в /database/factories

<?php

use Faker\Generator as Faker;

$factory->define(\App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => bcrypt('secret'),
        'remember_token' => str_random(10),
    ];
});

Я сталкивался с подобными вопросами здесь, на SO, но все они, похоже, имеют один и тот же ответ на использование \App\Model::class вместо App\Model::class.


person Dexter Bengil    schedule 15.10.2018    source источник


Ответы (2)


Ошибка также возникает из-за импорта неправильного TestCase и не только parent::setUp(); только

-

use PHPUnit\Framework\TestCase; [НЕПРАВИЛЬНО: и выдает эту ошибку]


use Tests\TestCase; [ПРАВИЛЬНО]

person Ayeni TonyOpe    schedule 21.01.2020
comment
Поскольку Laravel 7 выполняет модульное тестирование, это единственное, что сработало для меня. Но это импорт класса по умолчанию, если вы создаете модульный тест с помощью командной строки. - person Mycodingproject; 02.01.2021

Ох стрелять! parent::setUp() исправил эту проблему.

public function setUp()
{
    parent::setUp();

    // more codes here
}
person Dexter Bengil    schedule 15.10.2018
comment
не исправил меня, я все еще получаю те же ошибки. как я могу это исправить? - person Safak Ciplak; 09.01.2020