3

我想使用Model factory,但出现此错误:

1) Tests\Factory\UserFactoryTest::testUserCount
Error: Call to undefined method App\Entities\User::newCollection()

C:\Projects\factory_test\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:228
C:\Projects\factory_test\vendor\laravel\framework\src\Illuminate\Database\Eloquent\FactoryBuilder.php:178
C:\Projects\factory_test\tests\Factory\UserFactoryTest.php:21

工厂代码是从Laravel-Doctrine 示例项目中复制而来的:

$factory->define(App\Entities\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->title,
    ];
});

我错了什么?在使用工厂之前,我需要额外的配置吗?教义完美无缺,我只有问题factory()

测试类如下所示:

class UserFactoryTest extends TestCase {

    private $users = array();

    protected function setUp(): void
    {
        parent::setUp();

        $this->users = factory(User::class, 3)->create();
    }

    // ...

}
4

1 回答 1

4

您的setUp()函数使用标准的 Laravelfactory()助手来生成测试数据。

将其更改为:

protected function setUp(): void
{
    parent::setUp();
    $this->users = entity(User::class, 3)->create();
    //             ^^^^^^
}

Laravel Doctrineentity()辅助方法在幕后使用了与标准 Laravelfactory()辅助方法不同的基类。

// Laravel Doctrine
$factory = app('LaravelDoctrine\ORM\Testing\Factory');

对比Laravel 框架中的factory()辅助方法:

// Laravel framework
$factory = app(EloquentFactory::class);
于 2020-02-14T19:59:19.347 回答