首页 > 解决方案 > 在单元测试 laravel 8 中测试 api 时断言失败

问题描述

我有 api 控制器并在邮递员中测试没有错误。

public function deleteUserDetails(Request $request)
    {
        $user = User::find(auth('api')->user()->id);
        if ($user) {
            $detUser = UserDetail::where('user_id', $user->id)->first();
            if ($detUser) {
                $detUser->delete();
                $response = [
                    'status' => true,
                    'message' => 'Successfully Deleted.'
                ];
                $status = 204;
            } else {
                $response = [
                    'status' => true,
                    'message' => 'Data No Found.'
                ];
                $status = 404;
            }
        } else {
            $response = [
                'status' => false,
                'message' => 'Unauthorized.',
            ];
            $status = 401;
        }

        return response()->json($response, $status);
    }

这是路线/api

Route::delete('deleteUserDetails', [UserDetailAPIController::class, 'deleteUserDetails'])->name('deleteUserDetails');

这是我的单元测试代码

public function test_api_delete_user_details(){
        $token ='secret-token';
        $response = $this->withHeader('Authorization', 'Bearer ' . $token)
        ->delete(route('deleteUserDetails'));

        $response->assertStatus(204);
      }

当我运行测试时,我得到了这个错误,..

  1. Tests\Unit\API\User\UserTest::test_api_add_or_edit_user_details 预期状态代码 204 但收到 500。204 Failed asserting与 500 相同。

标签: laravelunit-testing

解决方案


推荐阅读