代码之家  ›  专栏  ›  技术社区  ›  Dexter Bengil

Laravel 5.7找不到名为[default][App\User]的工厂

  •  3
  • Dexter Bengil  · 技术社区  · 6 年前

    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

    <?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),
        ];
    });
    

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

    1 回复  |  直到 6 年前
        1
  •  15
  •   Ayeni TonyOpe    5 年前

    该错误也是由于 错误的 测试用例 不仅仅是 parent::setUp();

    -

    use PHPUnit\Framework\TestCase;


    use Tests\TestCase; [正确]

        2
  •  10
  •   Dexter Bengil    6 年前

    哦,开枪! parent::setUp() 已修复此问题。

    public function setUp()
    {
        parent::setUp();
    
        // more codes here
    }
    
    推荐文章