Fra*_*ost 5 php testing factory laravel
我在测试中有一个设置功能,它执行以下操作
function setUp()
{
$this->user = factory(User::class)->create();
}
Run Code Online (Sandbox Code Playgroud)
我使用过"use App\User;" 在最顶端.
这是我的模型工厂
/** @var \Illuminate\Database\Eloquent\Factory $factory */
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
Run Code Online (Sandbox Code Playgroud)
当runnning phpunit我得到错误
InvalidArgumentException: Unable to locate factory with name [default] [App\User].
Run Code Online (Sandbox Code Playgroud)
但是:如果我去php工匠修补一下
factory(User::class)->create();
Run Code Online (Sandbox Code Playgroud)
它工作...我尝试了App\User :: class和其他东西,甚至直接把它放在测试中而不是setUp方法.奇怪的是,同一文件中的另一个工厂正在运行.
Fra*_*ost 11
我找到了解决方案:我需要调用父setUp函数
function setUp()
{
parent::setUp(); // was missing
$this->user = factory(App\User::class)->create();
}
Run Code Online (Sandbox Code Playgroud)