← 中文资源

简体中文版本

注入失败以覆盖错误分支

在依赖边界注入失败,覆盖正常运行永远走不到的 catch 与降级分支。

阅读英文原文

目标

覆盖率显示 catch 分支未被测试,导致降级路径未经演练就发布。本配方在依赖边界注入失败,断言降级逻辑按设计执行(如持久化待处理订单),并断言错误以稳定的错误码对外暴露;提醒避免降级完全吞掉错误,需同时校验可见的错误信号。

步骤要点

  1. 在依赖边界注入失败并断言降级逻辑执行。
  2. 断言错误以稳定的错误码暴露。
  3. 在代码实际调用的边界注入,而非错误层。
  4. 同时校验降级副作用与可见错误信号。
const gateway = { charge: async () => { throw new Error('timeout'); } };
const order = new OrderService(gateway, memoryStore);
await order.checkout(input);
expect(memoryStore.pending()).toHaveLength(1);

排错提示

  • 注入层选错等于没注入。
  • 降级若完全吞错会掩盖问题。
  • 注入未必等于真实故障模式。

适用边界

  • 不能替代混沌测试。
  • 要求代码可注入依赖。