php - 你如何使用中间件('auth:api')测试路由?
问题描述
我正在为我正在从事的项目编写一些单元测试,但我似乎无法以登录用户的身份测试发布。
我尝试向 env 文件添加一个不记名令牌,这在我的机器上有效,但在推送后运行测试的 buddyworks 失败。
public function test_orders_route_authenticated_user () {
$data =
'{
"orderID": "001241",
"sku": "123456",
"quantity": 9,
"pricePerUnit": 78,
"priceTotal": 702
}';
$this->user = factory(User::class)->create();;
//dd($user);
$response = $this->withHeaders([
'Authorization'=>'MPBtsJN5qf',
])->json('POST', 'api/products',[
$data
]);
$response->assertStatus(200);
}
所以这段代码给了我错误 500。我设法得到错误 401 和 500,但从来没有得到预期的状态 200。请帮助
解决方案
如Passport 文档中所述,您可以使用Passport::actingAs(...)
:
public function test_orders_route_authenticated_user()
{
Passport::actingAs(
factory(User::class)->create()
);
$data = [
'orderID' => '001241',
'sku' => '123456',
'quantity' => 9,
'pricePerUnit' => 78,
'priceTotal' => 702,
];
$this->json('post', 'api/products', $data)->assertStatus(200);
}
推荐阅读
- java - 线程“main”java.lang.NullPointerException 中的异常:程序编译正常,但运行时显示错误
- android-studio - 带有收音机的颤动列表视图未显示在警报对话框中
- jquery - 如何修复 VScode 中无法正常工作的 jquery 代码
- javascript - 解释正文中给定的语法:
- kentico - Kentico Poll - 如何获得多项选择题的选民人数
- html - 如何使 div 适合我的屏幕高度?
- python - Google Cloud Functions 上的 Flask `before_request` 上下文函数
- typescript - 泛型函数的条件类型:类型不可分配
- c# - C# 将 INT 转换为 DATE
- java - 如何以编程方式从 Telegram 中的 Android 应用程序共享 GPS 位置?