Laravel 5.7无法找到名称为[factory] ​​[App\User]的工厂

Dex*_*gil 3 php unit-testing factory laravel laravel-5.7

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));

    }
}
Run Code Online (Sandbox Code Playgroud)

并且UserFactory是通过运行生成的 php artisan make:factory UserFactory --model=User

这是我的用户/数据库/工厂的工​​厂

<?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),
    ];
});
Run Code Online (Sandbox Code Playgroud)

我在这里遇到过类似的问题,但他们似乎都有相同的答案\App\Model::class而不是App\Model::class.

Aye*_*Ope 15

该错误还抛出由于导入了错误的TestCase并不仅仅是parent::setUp();只

——

use PHPUnit\Framework\TestCase;[错误:并引发此错误]


use Tests\TestCase; [正确的]


Dex*_*gil 7

哦拍!parent::setUp()解决了这个问题.

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

    // more codes here
}
Run Code Online (Sandbox Code Playgroud)