Laravel 5.7 在播种机中使用 Passport 进行测试

Posted

技术标签:

【中文标题】Laravel 5.7 在播种机中使用 Passport 进行测试【英文标题】:Laravel 5.7 Testing with Passport in seeder 【发布时间】:2019-06-28 07:18:04 【问题描述】:

我有一个生成 Passport 个人令牌的 UsersTableSeeder:

$user = factory(User::class)->create([
    'email' => 'someone@example.com',
]);

Artisan::call('passport:client', [
    '--personal' => 'default',
    '--no-interaction' => true,
]);

但是,当我使用 $this->artisan('db:seed'); 播种测试时,我收到以下错误:

Mockery\Exception\BadMethodCallException:收到 Mockery_1_Illuminate_Console_OutputStyle::askQuestion(),但未指定预期

【问题讨论】:

从控制台运行播种机时会发生什么,例如php artisan db:seed? @DelenaMalan 运行正常。 你在哪里跑$this->artisan('db:seed') 【参考方案1】:

passport:client 命令失败,因为即使带有--no-interaction 标志,如果未提供,它也会询问客户端的名称。而且测试不知道该回答什么,所以它失败了。

以下对我有用。

Artisan::call('passport:client --name=<client-name> --no-interaction --personal');

希望对你有帮助!

【讨论】:

以上是关于Laravel 5.7 在播种机中使用 Passport 进行测试的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 Jetstream:无法使用使用工厂和播种机播种的帐户登录

在 laravel 中播种时的质量分配错误

Laravel - 播种关系

未找到 Laravel 播种机

如何在 Laravel 中使用内存数据库的完整测试套件之前迁移和播种?

在 laravel 7 中播种时无法截断表格