【问题标题】:How I can setup multiple factory types in Lumen 7.x如何在 Lumen 7.x 中设置多种工厂类型
【发布时间】:2020-07-07 13:53:44
【问题描述】:

我想为我的用户模型(例如管理员)设置多个工厂。我按照文档并使用“defineAs”进行了尝试:https://lumen.laravel.com/docs/7.x/testing。但似乎这种方式不再可用:https://github.com/illuminate/database/commit/f07d290e75983ccbc51379b88181b7df9cb70ca0。有没有其他办法?!

【问题讨论】:

    标签: lumen factories


    【解决方案1】:

    如果你只需要使用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'])
    

    不过,如果有人能举例说明拥有多个工厂会更好

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      • 2023-02-09
      • 2021-07-12
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多