如何使用PHPUnit在laravel8中测试认证中间件保护的API端点?

w6mmgewl  于 2023-05-08  发布在  PHP
关注(0)|答案(1)|浏览(130)

我有一个API端点(/post),它受到passport身份验证的保护。客户端使用他们从另一个(/register)API端点获得的承载令牌访问此端点。
我的用户模型是名为AppUser的自定义模型,并且包含了HasFactory trait,但是当我创建一个actingAs用户来测试$this->actingAs(AppUser::factory()->create());时,它会抛出一个错误,显示为PHP Fatal error: Uncaught InvalidArgumentException: Unknown format "name" in /var/www/api_devbytes/vendor/fakerphp/faker/src/Faker/Generator.php
如何测试此(/post)端点?
我试图这样做创建默认用户模型的用户-$this->actingAs(User::factory()->create());,但这是抛出以下错误Expected type 'Illuminate\Contracts\Auth\Authenticatable'. Found 'Illuminate\Database\Eloquent\Collection|Illuminate\Database\Eloquent\Model'

yvt65v4c

yvt65v4c1#

我找到解决办法了。在这里-
Passport提供了一种实现此目的的方法

use Laravel\Passport\Passport;
Passport::actingAs(CustomUserModel::factory()->create());

Database\Factories中添加名为CustomFactory的工厂类

相关问题