laravel - 单元测试 Laravel 7 Passport Scope 问题在 1 个测试用例中检索错误的用户护照
问题描述
我正在Laravel 7.30.2中编写单元测试
测试用例如下
- 超级管理员将能够在请求 API A 时更新预订并获得成功响应
- Nurse将能够在请求 API A 时更新预订并获得成功响应
第 2 种情况仅在第 1 种情况成功后发生
上述场景的单元测试代码如下
// create user and assign role superadmin
$user = factory(User::class)->create();
$user->assignRole('Super Admin');
Passport::actingAs(
$user,
['admin']
);
// call the booking API while logged in as superadmin
$response = $this->put(route('api.booking.update', 1));
$response->assertExactJson(
[
'status_code' => config('staticdata.status_codes.ok'),
'message' => config('messages.booking.update_success'),
]
);
// create user and assign role nurse
$user = factory(User::class)->create();
$user->assignRole('Nurse');
Passport::actingAs(
$user,
['admin']
);
// call the booking API while logged in as nurse
$response = $this->put(route('api.booking.update', 1));
$response->assertExactJson(
[
'status_code' => config('staticdata.status_codes.ok'),
'message' => config('messages.booking.update_success'),
]
);
第一个 API 调用
$response = $this->put(route('api.booking.update', 1));
$response->assertExactJson(
[
'status_code' => config('staticdata.status_codes.ok'),
'message' => config('messages.booking.update_success'),
]
);
似乎工作正常,当我
dd(auth()->user()->id);
我能够获得正确的用户
但是在第二次 API 调用期间,我没有得到应该是护士的正确用户,而是得到了超级管理员,
我要检查的代码已经放在只需要护士访问的条件内,所以我确信我在正确的代码位置上有 dd。
是否有一些我错过的 Passport 文档 laravel 或者 Laravel 在运行单元测试期间有调度任务的方法
请帮忙 。
谢谢你。
解决方案
推荐阅读
- json - 如何为 JSON 提出对 RFC(s) 的一些修订以考虑评论?
- embedded - 连接 16*2 键盘和 LCD 与 atmega32
- angular - 使用 router.config.unshift() 设置动态路由仅在从 `AppComponent app.component.ts` 使用时才有效
- elasticsearch - Thruk 业务流程数据导出到弹性堆栈
- haskell - 如何将多态数据类型转换为单个元素列表
- powershell - PowerShell 工作流 - 挂起
- swift - 从 firebase(Swift) 中选择选定的数据
- php - 无法使用 PHP foreach 循环成功遍历目录中的 imagss
- firebase - 反应本机 Firebase 权限被拒绝
- sbt - sbt: play scala starter example build 失败