gpt4 book ai didi

php - 如何使用 Passport 在 phpunit 测试中验证用户

转载 作者:行者123 更新时间:2023-12-04 01:52:02 25 4
gpt4 key购买 nike

我正在尝试编写一个 PHPUnit 测试,在允许用户发出发布请求之前先对用户进行身份验证,但出现错误

1) Tests\Feature\BooksTest::test_onlyAuthenticatedUserCanAddBookSuccessfully ErrorException: Trying to get property 'client' of non-object

C:\wamp64\www\bookstore\vendor\laravel\passport\src\ClientRepository.php:89 C:\wamp64\www\bookstore\vendor\laravel\passport\src\PersonalAccessTokenFactory.php:71 C:\wamp64\www\bookstore\vendor\laravel\passport\src\HasApiTokens.php:67 C:\wamp64\www\bookstore\tests\Feature\BooksTest.php:20

当我运行 BooksTest 时

public function test_onlyAuthenticatedUserCanAddBookSuccessfully()
{
$user = factory(User::class)->create();
$token = $user->createToken('bookbook')->accessToken;

$response = $this->withHeaders(['Authorization' => 'Bearer '.$token])
->json('POST', '/api/books', [
'title' => 'new book post',
'author' => 'new author',
'user_id' => $user->id
]);

$response->assertStatus(201);
}

这是我第一次使用 PHPUnit 测试,我不知道为什么会收到此错误。我如何让它发挥作用?

最佳答案

您可以使用 Passport::actingAs 来完成此操作。

例如:

public function test_onlyAuthenticatedUserCanAddBookSuccessfully()
{
$user = factory(User::class)->create();

Passport::actingAs($user);

$response = $this->json('POST', '/api/books', [
'title' => 'new book post',
'author' => 'new author',
'user_id' => $user->id
]);

$response->assertStatus(201);
}

请参阅此处的文档 - https://laravel.com/docs/5.7/passport#testing

关于php - 如何使用 Passport 在 phpunit 测试中验证用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52556630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com