lumen - 如何在 Lumen 7.x 中设置多种工厂类型
问题描述
我想为我的用户模型(例如管理员)设置多个工厂。我按照文档并使用“defineAs”进行了尝试:https ://lumen.laravel.com/docs/7.x/testing 。但似乎这种方式不再可用:https ://github.com/illuminate/database/commit/f07d290e75983ccbc51379b88181b7df9cb70ca0 。有没有替代方法?!
解决方案
如果你只需要使用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'])
不过,如果有人能举例说明拥有多个工厂会更好
推荐阅读
- tensorflow - 使用 image_dataset_from_directory 时出现 OOM
- git - 在 mysite.com/ 部署 GitHub Pages 站点
- dapper - 使用 Dapper SQL Builder 的 BETWEEN 动态 WHERE 子句
- localhost - Gatsbyjs 开发 LOCAL HOST 加载慢,慢 15 分钟
- php - 按小时和帖子分组(多个)
- eclipse-plugin - 如何在 MenuManger 中动态隐藏菜单
- asynchronous - 如何使用只有 BroadcastBlock 和 ActionBlock 的数据流
- css - 不允许重复的背景图像 - CSS LINT
- android - Hilt 在 API 级别 18 上崩溃
- php - 如何编写保留 $_POST 并一致删除文件扩展名的 .htaccess?