【发布时间】:2020-05-20 16:07:49
【问题描述】:
我想使用Model factories,但出现此错误:
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 example project:
$factory->define(App\Entities\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->title,
];
});
我做错了什么?在使用工厂之前,我需要额外的配置吗? Doctrine 效果很好,我只对factory() 有意见
测试类如下所示:
class UserFactoryTest extends TestCase {
private $users = array();
protected function setUp(): void
{
parent::setUp();
$this->users = factory(User::class, 3)->create();
}
// ...
}
【问题讨论】:
-
在您的情况下,
$factory似乎仍在使用 Eloquent。阅读this article说明它应该是LaravelDoctrine\ORM\Testing\Factory的实例,只要工厂文件位于database/factories。 -
$factory是Illuminate\Database\Eloquent\Factory的一个实例。但我不明白为什么,因为我的 Facory 类位于database/factories -
我会仔细检查您是否已完成位于 here 的所有设置步骤,特别是涉及 ServiceProvider 和配置发布的步骤。
-
@leek 我试过了,但我仍然得到那个错误
-
在
setUp函数中尝试$this->users = entity(User::class, 3)->create();而不是factory()
标签: php laravel doctrine-orm laravel-factory laravel-doctrine