|
@@ -30,7 +30,7 @@ const TestComponent = ({ action, item }: { action: string; item?: CartItem }) =>
|
|
|
<div key={index} data-testid={`item-${index}`}>
|
|
<div key={index} data-testid={`item-${index}`}>
|
|
|
<span data-testid={`item-${index}-id`}>{item.id}</span>
|
|
<span data-testid={`item-${index}-id`}>{item.id}</span>
|
|
|
<span data-testid={`item-${index}-name`}>{item.name}</span>
|
|
<span data-testid={`item-${index}-name`}>{item.name}</span>
|
|
|
- <span data-testid={`item-${index}-spec`}>{item.spec || ''}</span>
|
|
|
|
|
|
|
+ {/* spec字段已移除 */}
|
|
|
<span data-testid={`item-${index}-quantity`}>{item.quantity}</span>
|
|
<span data-testid={`item-${index}-quantity`}>{item.quantity}</span>
|
|
|
<span data-testid={`item-${index}-stock`} style={{ display: 'none' }}>{item.stock}</span>
|
|
<span data-testid={`item-${index}-stock`} style={{ display: 'none' }}>{item.stock}</span>
|
|
|
</div>
|
|
</div>
|
|
@@ -73,12 +73,11 @@ describe('CartContext - 规格支持', () => {
|
|
|
const childGoods: CartItem = {
|
|
const childGoods: CartItem = {
|
|
|
id: 2001, // 子商品ID
|
|
id: 2001, // 子商品ID
|
|
|
parentGoodsId: 2000, // 父商品ID
|
|
parentGoodsId: 2000, // 父商品ID
|
|
|
- name: '测试父商品 - 红色/M', // 包含规格信息的完整名称
|
|
|
|
|
|
|
+ name: '红色/M', // 规格名称
|
|
|
price: 109.9,
|
|
price: 109.9,
|
|
|
image: 'child.jpg',
|
|
image: 'child.jpg',
|
|
|
stock: 5,
|
|
stock: 5,
|
|
|
quantity: 1,
|
|
quantity: 1,
|
|
|
- spec: '红色/M', // 规格信息
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const { getByTestId } = render(
|
|
const { getByTestId } = render(
|
|
@@ -89,8 +88,7 @@ describe('CartContext - 规格支持', () => {
|
|
|
|
|
|
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
|
expect(getByTestId('item-0-id').textContent).toBe('2001')
|
|
expect(getByTestId('item-0-id').textContent).toBe('2001')
|
|
|
- expect(getByTestId('item-0-name').textContent).toBe('测试父商品 - 红色/M')
|
|
|
|
|
- expect(getByTestId('item-0-spec').textContent).toBe('红色/M')
|
|
|
|
|
|
|
+ expect(getByTestId('item-0-name').textContent).toBe('红色/M')
|
|
|
expect(mockSetStorageSync).toHaveBeenCalled()
|
|
expect(mockSetStorageSync).toHaveBeenCalled()
|
|
|
})
|
|
})
|
|
|
|
|
|
|
@@ -98,23 +96,21 @@ describe('CartContext - 规格支持', () => {
|
|
|
const childGoods1: CartItem = {
|
|
const childGoods1: CartItem = {
|
|
|
id: 3001,
|
|
id: 3001,
|
|
|
parentGoodsId: 3000, // 父商品ID
|
|
parentGoodsId: 3000, // 父商品ID
|
|
|
- name: '测试商品 - 蓝色/L',
|
|
|
|
|
|
|
+ name: '蓝色/L', // 规格名称
|
|
|
price: 89.9,
|
|
price: 89.9,
|
|
|
image: 'goods.jpg',
|
|
image: 'goods.jpg',
|
|
|
stock: 10,
|
|
stock: 10,
|
|
|
quantity: 1,
|
|
quantity: 1,
|
|
|
- spec: '蓝色/L',
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const childGoods2: CartItem = {
|
|
const childGoods2: CartItem = {
|
|
|
id: 3001, // 同一子商品ID
|
|
id: 3001, // 同一子商品ID
|
|
|
parentGoodsId: 3000, // 父商品ID
|
|
parentGoodsId: 3000, // 父商品ID
|
|
|
- name: '测试商品 - 蓝色/L',
|
|
|
|
|
|
|
+ name: '蓝色/L', // 规格名称
|
|
|
price: 89.9,
|
|
price: 89.9,
|
|
|
image: 'goods.jpg',
|
|
image: 'goods.jpg',
|
|
|
stock: 10,
|
|
stock: 10,
|
|
|
quantity: 3,
|
|
quantity: 3,
|
|
|
- spec: '蓝色/L',
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const { getByTestId, rerender } = render(
|
|
const { getByTestId, rerender } = render(
|
|
@@ -126,7 +122,6 @@ describe('CartContext - 规格支持', () => {
|
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
|
console.log('Item 0 id:', getByTestId('item-0-id').textContent)
|
|
console.log('Item 0 id:', getByTestId('item-0-id').textContent)
|
|
|
console.log('Item 0 name:', getByTestId('item-0-name').textContent)
|
|
console.log('Item 0 name:', getByTestId('item-0-name').textContent)
|
|
|
- console.log('Item 0 spec:', getByTestId('item-0-spec').textContent)
|
|
|
|
|
const quantityElement = getByTestId('item-0-quantity')
|
|
const quantityElement = getByTestId('item-0-quantity')
|
|
|
console.log('Quantity element text:', quantityElement.textContent)
|
|
console.log('Quantity element text:', quantityElement.textContent)
|
|
|
// 修复:检查数量是否正确,应该是1而不是库存值10
|
|
// 修复:检查数量是否正确,应该是1而不是库存值10
|
|
@@ -264,7 +259,7 @@ describe('CartContext - 规格支持', () => {
|
|
|
<div key={index} data-testid={`item-${index}`}>
|
|
<div key={index} data-testid={`item-${index}`}>
|
|
|
<span data-testid={`item-${index}-id`}>{item.id}</span>
|
|
<span data-testid={`item-${index}-id`}>{item.id}</span>
|
|
|
<span data-testid={`item-${index}-name`}>{item.name}</span>
|
|
<span data-testid={`item-${index}-name`}>{item.name}</span>
|
|
|
- <span data-testid={`item-${index}-spec`}>{item.spec || ''}</span>
|
|
|
|
|
|
|
+ {/* spec字段已移除 */}
|
|
|
<span data-testid={`item-${index}-quantity`}>{item.quantity}</span>
|
|
<span data-testid={`item-${index}-quantity`}>{item.quantity}</span>
|
|
|
<span data-testid={`item-${index}-price`}>{item.price}</span>
|
|
<span data-testid={`item-${index}-price`}>{item.price}</span>
|
|
|
</div>
|
|
</div>
|
|
@@ -286,11 +281,10 @@ describe('CartContext - 规格支持', () => {
|
|
|
// 切换到新规格
|
|
// 切换到新规格
|
|
|
const newChildGoods = {
|
|
const newChildGoods = {
|
|
|
id: 6002,
|
|
id: 6002,
|
|
|
- name: '测试父商品 - 规格B',
|
|
|
|
|
|
|
+ name: '规格B', // 规格名称
|
|
|
price: 119.9,
|
|
price: 119.9,
|
|
|
stock: 5,
|
|
stock: 5,
|
|
|
image: 'child2.jpg',
|
|
image: 'child2.jpg',
|
|
|
- spec: '规格B'
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
rerender(
|
|
rerender(
|
|
@@ -302,8 +296,7 @@ describe('CartContext - 规格支持', () => {
|
|
|
// 验证规格已切换
|
|
// 验证规格已切换
|
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
expect(getByTestId('items-count').textContent).toBe('1')
|
|
|
expect(getByTestId('item-0-id').textContent).toBe('6002') // ID已更新
|
|
expect(getByTestId('item-0-id').textContent).toBe('6002') // ID已更新
|
|
|
- expect(getByTestId('item-0-name').textContent).toBe('测试父商品 - 规格B')
|
|
|
|
|
- expect(getByTestId('item-0-spec').textContent).toBe('规格B')
|
|
|
|
|
|
|
+ expect(getByTestId('item-0-name').textContent).toBe('规格B') // 规格名称
|
|
|
expect(getByTestId('item-0-price').textContent).toBe('119.9')
|
|
expect(getByTestId('item-0-price').textContent).toBe('119.9')
|
|
|
expect(getByTestId('item-0-quantity').textContent).toBe('2') // 数量保持不变
|
|
expect(getByTestId('item-0-quantity').textContent).toBe('2') // 数量保持不变
|
|
|
})
|
|
})
|