php - 无法找到 [Laravel\Passport\Client] 的工厂
问题描述
我有一个安装了护照的 laravel 应用程序来管理 api 身份验证。我正在尝试编写一些测试,但我无法按照laravel 上的文档创建客户端。我搜索了类似的 SO 答案,但他们都建议使用我正在做的 setUp 和 tearDown 方法。当我运行测试时,我得到
InvalidArgumentException
Unable to locate factory for [Laravel\Passport\Client].
我怎样才能让它工作?
下面是我的代码。我已经从护照包中包含了客户端模型,并且我正在使用类似 SO 答案中建议的 setUp 和 tearDown 方法。
我试过composer dump-autoload
和php artisan config:cache
。
use Laravel\Passport\Passport;
use Laravel\Passport\Client;
...
use RefreshDatabase;
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
parent::tearDown();
}
public function testAPIEndpointFailsWhenNoParamIsSet()
{
Passport::actingAsClient(
factory(Client::class)->create(),
['*']
);
$response = $this->postJson('/api/endpoint', [
'param' => ''
]);
$response->assertStatus(401)
->assertJson(['message' => 'Unauthenticated.']);
}
解决方案
护照客户端工厂应该在发布时存在......
如果没有......让它成为你自己:
来自:这里
use Laravel\Passport\Passport;
use Laravel\Passport\Client;
$factory->define(Client::class, function (Faker $faker) {
return [
'user_id' => null,
'name' => $faker->company,
'secret' => Str::random(40),
'redirect' => $faker->url,
'personal_access_client' => 0,
'password_client' => 0,
'revoked' => 0,
];
});
推荐阅读
- image - 在 Embarcadero C++Builder 中反转位图
- excel - 在 WebBrowser1 中查看图像并调整其大小
- javascript - 当用户从他们打开的另一个选项卡中注销时,如何将用户发送到登录页面?
- android - androidx.navigation 菜单项的多个目的地
- amazon-ec2 - ModuleNotFoundError:没有名为“wtforms_json”的模块
- flutter - 如何将我的提供商转变为服务?
- r - 闪亮的应用服务器不加载“* .rds”对象
- java - 两个独立服务中是否存在数据同步模式?
- c++ - 如何在 C++ 中正确实现 addObject() 函数?
- javascript - 记录来自 API 调用的函数结果 - Javascript