我想为我的用户模型(例如管理员)设置多个工厂。我按照文档并使用“defineAs”进行了尝试:https ://lumen.laravel.com/docs/7.x/testing 。但似乎这种方式不再可用:https ://github.com/illuminate/database/commit/f07d290e75983ccbc51379b88181b7df9cb70ca0 。有没有替代方法?!
问问题
593 次
1 回答
0
如果你只需要使用defineAs,你实际上只需要重新排列define函数,比如
$factory->define('App/User', function (Faker $faker) use ($factory) {
$user = $factory->raw('App/User');
return array_merge($user, ['admin' => true]);
}, 'admin');
编辑:当我需要调用所述工厂以在 phpunit 上将其与actingAs一起使用时,看起来我也遇到了一些问题,所以我做了一些解决方法
在工厂我做类似的东西
$factory->define('App/User', function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
];
});
在测试中我称之为
$admin = factory('App/User')->create([
'admin' => true
]);
$this->actingAs($admin)->post('/login', ['username' => 'admin', 'password' => 'admin'])
不过,如果有人能举例说明拥有多个工厂会更好
于 2020-08-08T08:58:05.847 回答