目标
覆盖率显示 catch 分支未被测试,导致降级路径未经演练就发布。本配方在依赖边界注入失败,断言降级逻辑按设计执行(如持久化待处理订单),并断言错误以稳定的错误码对外暴露;提醒避免降级完全吞掉错误,需同时校验可见的错误信号。
步骤要点
- 在依赖边界注入失败并断言降级逻辑执行。
- 断言错误以稳定的错误码暴露。
- 在代码实际调用的边界注入,而非错误层。
- 同时校验降级副作用与可见错误信号。
const gateway = { charge: async () => { throw new Error('timeout'); } };
const order = new OrderService(gateway, memoryStore);
await order.checkout(input);
expect(memoryStore.pending()).toHaveLength(1);
排错提示
- 注入层选错等于没注入。
- 降级若完全吞错会掩盖问题。
- 注入未必等于真实故障模式。
适用边界
- 不能替代混沌测试。
- 要求代码可注入依赖。