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:无法使用使用工厂和播种机播种的帐户登录