# 多身份功能 - API测试指南 > 测试时间:2026-02-28 > 测试环境:开发环境 --- ## 📋 测试前准备 ### 1. 获取测试Token **登录接口:** `POST /api/auth/login` ```json { "phone": "13800138000", "password": "123456" } ``` **返回示例:** ```json { "code": 200, "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "userInfo": { "id": 1, "phone": "13800138000", "role": "parent" } } } ``` **保存Token:** 后续所有请求都需要在Header中添加: ``` Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` --- ## 🧪 API测试用例 ### 测试1:获取用户所有身份 **接口:** `GET /api/user/roles/list` **请求头:** ``` Authorization: {your_token} ``` **预期返回:** ```json { "code": 200, "data": { "allRoles": ["parent"], "primaryRole": "parent", "hasMultipleRoles": false }, "message": "success" } ``` **验证点:** - ✅ `allRoles` 包含用户的所有身份 - ✅ `primaryRole` 是用户的主身份 - ✅ `hasMultipleRoles` 正确反映是否有多个身份 --- ### 测试2:申请新身份 **接口:** `POST /api/user/roles/apply` **请求头:** ``` Authorization: {your_token} ``` **请求参数:** ``` roleType=teacher ``` **预期返回:** ```json { "code": 200, "data": null, "message": "success" } ``` **验证点:** - ✅ 返回成功 - ✅ 再次调用测试1,`allRoles` 应包含 `["parent", "teacher"]` - ✅ `hasMultipleRoles` 应为 `true` **错误情况测试:** 1. 重复申请同一身份: ```json { "code": 500, "message": "该身份已存在" } ``` 2. 无效的身份类型: ```json { "code": 500, "message": "无效的角色类型" } ``` --- ### 测试3:切换主身份 **接口:** `POST /api/user/roles/switch` **请求头:** ``` Authorization: {your_token} ``` **请求参数:** ``` roleType=teacher ``` **预期返回:** ```json { "code": 200, "data": null, "message": "success" } ``` **验证点:** - ✅ 返回成功 - ✅ 再次调用测试1,`primaryRole` 应为 `"teacher"` - ✅ 查询 `user` 表,`user_type` 字段应更新为 `"teacher"` **错误情况测试:** 1. 切换到不存在的身份: ```json { "code": 500, "message": "该身份不存在,请先申请该身份" } ``` --- ### 测试4:检查是否拥有某个角色 **接口:** `GET /api/user/roles/has` **请求头:** ``` Authorization: {your_token} ``` **请求参数:** ``` roleType=teacher ``` **预期返回:** ```json { "code": 200, "data": true, "message": "success" } ``` **验证点:** - ✅ 拥有该角色返回 `true` - ✅ 不拥有该角色返回 `false` --- ### 测试5:删除角色 **接口:** `DELETE /api/user/roles/remove` **请求头:** ``` Authorization: {your_token} ``` **请求参数:** ``` roleType=teacher ``` **预期返回:** ```json { "code": 200, "data": null, "message": "success" } ``` **验证点:** - ✅ 返回成功 - ✅ 再次调用测试1,`allRoles` 不应包含 `"teacher"` **错误情况测试:** 1. 删除主身份: ```json { "code": 500, "message": "不能删除主身份" } ``` 2. 删除不存在的身份: ```json { "code": 500, "message": "该身份不存在" } ``` --- ## 🔍 数据库验证 ### 验证1:检查 user_roles 表数据 ```sql -- 查看用户的所有身份 SELECT * FROM user_roles WHERE user_id = 1; ``` **预期结果:** ``` +----+---------+-----------+------------+--------+---------------------+---------------------+ | id | user_id | role_type | is_primary | status | create_time | update_time | +----+---------+-----------+------------+--------+---------------------+---------------------+ | 1 | 1 | parent | 1 | 1 | 2026-02-28 10:00:00 | 2026-02-28 10:00:00 | | 2 | 1 | teacher | 0 | 1 | 2026-02-28 10:05:00 | 2026-02-28 10:05:00 | +----+---------+-----------+------------+--------+---------------------+---------------------+ ``` --- ### 验证2:检查数据一致性 ```sql -- 检查 user.user_type 是否与 user_roles 主身份一致 SELECT u.id, u.phone, u.user_type as user_table_role, ur.role_type as primary_role, IF(u.user_type = ur.role_type, '✓ 一致', '✗ 不一致') as consistency FROM user u LEFT JOIN user_roles ur ON u.id = ur.user_id AND ur.is_primary = 1 WHERE u.id = 1; ``` **预期结果:** ``` +----+-------------+-----------------+--------------+-------------+ | id | phone | user_table_role | primary_role | consistency | +----+-------------+-----------------+--------------+-------------+ | 1 | 13800138000 | parent | parent | ✓ 一致 | +----+-------------+-----------------+--------------+-------------+ ``` --- ## 📱 前端测试 ### 测试1:登录后查看身份 1. 打开微信开发者工具 2. 登录账号 3. 进入"我的"页面 4. 查看是否显示当前身份 **预期:** - 显示"当前身份:家长" --- ### 测试2:申请新身份 1. 点击"申请其他身份"按钮 2. 选择"陪伴员" 3. 点击"提交申请" **预期:** - 显示"申请成功"提示 - 返回上一页后,显示"切换身份"选项 - 身份列表包含"家长"和"陪伴员" --- ### 测试3:切换身份 1. 点击"陪伴员"身份 2. 确认切换 **预期:** - 显示"切换成功"提示 - 页面刷新,显示"当前身份:陪伴员" - 首页显示陪伴员相关功能 --- ## ✅ 测试通过标准 ### 后端测试 - [ ] 所有API接口返回正确 - [ ] 错误情况处理正确 - [ ] 数据库数据一致性正确 ### 前端测试 - [ ] 登录后能看到所有身份 - [ ] 申请新身份功能正常 - [ ] 切换身份功能正常 - [ ] 页面刷新后状态保持 ### 兼容性测试 - [ ] 单身份用户正常使用 - [ ] 多身份用户正常使用 - [ ] 现有功能不受影响 --- ## 🐛 常见问题 ### 问题1:API返回401未授权 **原因:** Token未传递或已过期 **解决:** 重新登录获取新Token ### 问题2:申请身份失败 **原因:** 身份类型无效或已存在 **解决:** 检查 `roleType` 参数是否正确 ### 问题3:切换身份后页面没有刷新 **原因:** 前端缓存问题 **解决:** 清除缓存重新编译 --- ## 📊 测试报告模板 ``` 测试时间:2026-02-28 测试人员:江鑫杰 测试环境:开发环境 【后端测试】 ✅ 获取用户所有身份 - 通过 ✅ 申请新身份 - 通过 ✅ 切换主身份 - 通过 ✅ 检查是否拥有角色 - 通过 ✅ 删除角色 - 通过 【前端测试】 ✅ 登录后查看身份 - 通过 ✅ 申请新身份 - 通过 ✅ 切换身份 - 通过 【数据库验证】 ✅ user_roles 表数据正确 ✅ 数据一致性检查通过 【兼容性测试】 ✅ 单身份用户正常使用 ✅ 多身份用户正常使用 ✅ 现有功能不受影响 测试结论:✅ 全部通过 ```