无法找到[Laravel\Passport\Client]的工厂。

问题描述 投票:0回答:1

我有一个安装了 passport 的 laravel 应用来管理 api auth。我想写一些测试, 但我无法按照下面的要求创建一个客户端. 文件 在laravel上. 我已经搜索了类似的SO的答案,但他们都建议使用setUp和trapDown方法,我正在做。当我运行测试时, 我得到的是

InvalidArgumentException 

Unable to locate factory for [Laravel\Passport\Client].

如何才能让这个工作顺利进行?

以下是我的代码。我已经包含了护照包中的客户端模型,并且我使用了类似SO答案中建议的setUp和 tearDown方法。

我已经尝试了 composer dump-autoloadphp 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.']);
}
php laravel laravel-passport phpunit-testing
1个回答
1
投票

passport 客户端工厂应该是存在的发布....

如果它不存在......你自己做吧。

从: 这里

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,
    ];
});
© www.soinside.com 2019 - 2024. All rights reserved.