@linkzhaobug-to-failing-testテキスト公開2026/06/13 更新

把一段 bug 复现描述转成一个会失败的最小单测(TDD 起点),只给修复方向不给完整答案。

17スター0Fork53コピー

Prompt

プレビュー

生成物

1 個の生成物

预期 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 当作缺失值。

README

README.md

Bug 转失败测试

描述 bug 现象与预期,先产出一个会失败的最小测试(指明框架、命名清晰描述预期),再给最小修复方向。符合 TDD:先红再绿,亲眼看它失败。