首页 > 解决方案 > 测试 Laravel Sanctum 会导致错误的方法调用

问题描述

我正在尝试测试经过身份验证的 API 路由,只有经过身份验证的用户才能发布到特定路由。

查看 Laravel Sanctum 文档,我可以使用下面的代码来创建和验证用户:

Sanctum::actingAs(
    factory(User::class)->create(),
    ['*']
);

当我尝试复制它时,运行测试时出错

BadMethodCallException: Call to undefined method App\User::withAccessToken()

我的测试代码如下:

    public function an_authenticated_user_can_add_a_client()
    {
        $user = Sanctum::actingAs(
            factory(User::class)->create(),
            ['*']
        );
        dd($user);
        // $this->post('/api/clients', $this->data());
    }

api.php

Route::middleware('auth:sanctum')->group(function () {

    //Clients
    Route::get('/clients/{client}','ContactsController@show');
    Route::post('/clients','ContactsController@store');
    Route::patch('/clients/{client}','ContactsController@update');
    Route::delete('/clients/{client}','ContactsController@destroy');
});

我的 User 类中没有 withAccessToken() 方法,也看不到该方法来自何处或在任何地方指定。任何帮助将不胜感激。

标签: laravellaravel-sanctum

解决方案


用于 SPA 的 Laravel Sanctum 使用普通会话身份验证,因此默认的 actuatorAs 方法可以正常工作。Sanctum 中的 actuatorAs 方法旨在用于 api 令牌。希望能帮助到你。


推荐阅读