# 前端多规格功能测试指南 ## 功能概述 已完成商品详情页多规格功能集成,包括: - 规格数据加载 - 规格选择器组件 - 购物车支持SKU信息 - 立即购买支持SKU信息 ## 测试步骤 ### 1. 准备测试数据 在后端创建一个多规格商品,包含: - 基础商品信息 - 规格组:颜色(红色、蓝色)、尺寸(S、M、L) - 对应的SKU数据 ### 2. 商品详情页测试 1. 访问商品详情页:`/shop/goodsDetail/index?id={商品ID}` 2. 检查是否正确加载: - 商品基本信息 - 商品图片轮播 - 价格显示 ### 3. 规格选择测试 1. 点击"加入购物车"按钮 2. 应该弹出规格选择器 3. 检查规格选择器内容: - 商品图片和基本信息 - 规格组显示(颜色、尺寸) - 规格值选项 - 数量选择器 ### 4. 规格交互测试 1. 选择不同规格组合 2. 检查: - SKU价格更新 - 库存数量更新 - 不可选规格置灰 - 数量限制(不超过库存) ### 5. 加入购物车测试 1. 选择完整规格 2. 设置购买数量 3. 点击确定 4. 检查: - 成功提示 - 购物车数量更新 - 购物车页面显示规格信息 ### 6. 立即购买测试 1. 点击"立即购买"按钮 2. 选择规格和数量 3. 点击确定 4. 检查是否正确跳转到订单确认页 ## 预期行为 ### 单规格商品 - 直接加入购物车/立即购买 - 不显示规格选择器 ### 多规格商品 - 必须选择规格才能操作 - 显示规格选择器 - 根据选择更新价格和库存 ## 数据流验证 ### 1. API调用检查 打开浏览器开发者工具,检查以下API调用: ``` GET /shop/shop-goods/{id} // 商品详情 GET /shop/shop-goods-spec?goodsId={id} // 商品规格 GET /shop/shop-goods-sku?goodsId={id} // 商品SKU ``` ### 2. 购物车数据检查 检查本地存储中的购物车数据: ```javascript // 在浏览器控制台执行 JSON.parse(localStorage.getItem('cart_items') || '[]') ``` 应该包含SKU信息: ```json [{ "goodsId": 123, "name": "测试商品", "price": "99.00", "image": "...", "quantity": 2, "skuId": 456, "specInfo": "颜色:红色|尺寸:L", "addTime": 1640995200000 }] ``` ## 常见问题排查 ### 1. 规格选择器不显示 - 检查 `specs` 数组是否有数据 - 检查 `showSpecSelector` 状态 - 检查API返回数据格式 ### 2. SKU匹配失败 - 检查规格值字符串格式 - 检查SKU数据中的 `sku` 字段格式 - 确认规格名称排序一致性 ### 3. 价格不更新 - 检查SKU数据中的 `price` 字段 - 检查 `selectedSku` 状态更新 - 确认价格显示逻辑 ### 4. 库存显示错误 - 检查SKU数据中的 `stock` 字段 - 检查库存为0时的处理逻辑 - 确认数量选择器的最大值限制 ## 调试技巧 ### 1. 控制台日志 在关键位置添加日志: ```javascript console.log('Specs loaded:', specs); console.log('SKUs loaded:', skus); console.log('Selected SKU:', selectedSku); ``` ### 2. React DevTools 使用React DevTools检查组件状态: - GoodsDetail组件的state - SpecSelector组件的props和state ### 3. 网络面板 检查API请求和响应: - 请求参数是否正确 - 响应数据格式是否符合预期 - 是否有错误状态码 ## 性能优化建议 1. **数据预加载**: 考虑在商品详情加载时同时加载规格数据 2. **缓存策略**: 对规格数据进行适当缓存 3. **懒加载**: 规格选择器可以考虑懒加载 4. **防抖处理**: 规格选择时的价格更新可以添加防抖 ## 后续优化方向 1. **规格图片**: 支持规格值对应的商品图片 2. **规格预设**: 支持默认选中某个规格组合 3. **批量操作**: 支持批量添加不同规格的商品 4. **规格搜索**: 在规格较多时支持搜索功能