laravel - 我如何测试 Laravel 护照 API 端点

标签 laravel phpunit laravel-passport

所以我想对我的 API 端点进行单元测试。 我正在使用 Laravel 5.8 并且 api 身份验证是使用 Passport 完成的 我有以下测试:

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

    $response = $this->json('POST', 'api/login', [
        'email' => $user->email,
        'password' => 'secret',
    ]);

    $response
        ->assertStatus(200)
        ->assertJson([
            'success' => true,
        ]);
}

当我使用 Postman 执行请求时它运行良好,对用户进行身份验证并返回 token 但是当我启动测试时它失败并显示(“预期状态代码 200 但收到 500。”)

所以我在回复中进行了更深入的搜索,我发现了这个:

"message": "Personal access client not found. Please create one."

不知道为什么会这样,如果有人对此有见识的话

编辑:已修复,请参阅下面我的最后一个答案

最佳答案

只是为了让有同样问题的人清楚,问题是我正在使用内存数据库进行测试,每次运行测试时它都会重置,所以当然护照 key 也会被删除,这就是为什么在测试开始时添加 \Artisan::call('passport:install'); 可以解决这个问题。

关于laravel - 我如何测试 Laravel 护照 API 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55851519/

相关文章:

laravel - 限制特定用户对 POST、DELETE、PATCH、PUT 的访问

php - Blade 中的 Laravel 5.5 Eloquent 请求和许多 sql 查询

php - Laravel 在 hasManyThrough 中包含用户的帖子

php - Laravel 5.2 .htaccess 和 500 内部错误

php - 由于 phpunit 恶意文件 eval-stdin.php,端口 80 在 cpanel 上被阻止

PHPUnit 没有捕捉到预期的异常

api - 将护照身份验证集成到 Lumen 中

php - Laravel 护照 oauth/授权错误

PHPUnit 和来自 Guzzle 的模拟请求

laravel-5 - Laravel Passport token 长度