【发布时间】:2020-10-04 16:51:04
【问题描述】:
我有一个安装了护照的 laravel 应用程序来管理 api 身份验证。我正在尝试编写一些测试,但我无法按照 laravel 上的 docs 创建客户端。我搜索了类似的 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.']);
}
【问题讨论】:
-
也许
composer dumpautoload会有所帮助,然后再做artisan serve。 -
试过 composer dump-autoload
-
清除所有缓存并重新启动 laravel 对我来说最近 2 天有效。
artisan config:clear和artisan cache:clear -
也试过了。
标签: php laravel laravel-passport phpunit