预期 vs 实际
- 预期行为:金额为 0 的订单应显示为“免费”,但仍保留在订单列表中。
- 实际行为:金额为 0 的订单被过滤掉,用户看不到兑换记录。
失败测试
it('keeps zero-amount orders and labels them as free', () => {
const rows = formatOrders([
{ id: 'o1', amountCents: 0, title: 'coupon redemption' },
]);
expect(rows).toHaveLength(1);
expect(rows[0]).toMatchObject({ id: 'o1', priceLabel: '免费' });
});
预计失败现象
当前实现大概率在 rows 长度断言失败:收到 0 条,因为 amountCents 被当成 falsy 后过滤。
根因推测与修复方向
检查是否存在 filter(order => order.amountCents) 一类判断。最小修复是显式判断 amountCents != null,不要把 0 当作缺失值。