首页 > 解决方案 > 你如何使用中间件('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。请帮助

标签: phplaravelphpunitlaravel-passport

解决方案


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);
}

推荐阅读