测试 Laravel Sanctum 作为错误方法调用的结果
Testing Laravel Sanctum acting as results in bad method call
我正在尝试测试经过身份验证的 API 路由,只有经过身份验证的用户才能 post 到特定路由。
查看 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');
});
我的用户 class 中没有 withAccessToken() 方法,也看不到此方法的来源或指定位置。
任何帮助将不胜感激。
您的 User 模型缺少 HasApiTokens
特性,它为 User 模型提供了您缺少的功能。在 documentation 部分的发行 API 代币中也有描述。
use Laravel\Sanctum\HasApiTokens;
class User {
use HasApiTokens;
}
Laravel SPA 的 Sanctum 使用正常的会话身份验证,因此默认的 actingAs 方法工作正常。 Sanctum 中的 actingAs 方法旨在用于 api 个令牌。希望对你有帮助。
我正在尝试测试经过身份验证的 API 路由,只有经过身份验证的用户才能 post 到特定路由。
查看 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');
});
我的用户 class 中没有 withAccessToken() 方法,也看不到此方法的来源或指定位置。 任何帮助将不胜感激。
您的 User 模型缺少 HasApiTokens
特性,它为 User 模型提供了您缺少的功能。在 documentation 部分的发行 API 代币中也有描述。
use Laravel\Sanctum\HasApiTokens;
class User {
use HasApiTokens;
}
Laravel SPA 的 Sanctum 使用正常的会话身份验证,因此默认的 actingAs 方法工作正常。 Sanctum 中的 actingAs 方法旨在用于 api 个令牌。希望对你有帮助。