新模块合并时覆盖率从 68% 掉到 61%,CI 卡在 threshold 65%,生成的 service 和 controller 都没有测试文件。乍看像缓存或者权限的锅,追下去往往不是。
jest --coverage --collectCoverageFrom='src/modules/**/*.ts' npx jest src/modules/order --coverage
追下去是这么回事:模板目录里只有实现文件,没有测试骨架。团队规范要求新增代码带测试,生成器没跟上这条。
「生成代码缺测试」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。
监控和日志的时间要对上,时区不一致会多绕很大一圈。
具体做法是,模板里补一份最小可跑的测试文件;测试用内存库或 mock 不要连真实依赖;生成时把模块名写进 describe 和用例名;确认新模块的单测在 CI 里能被收集到。
验收就看一点,生成模块后 coverage 不低于 65% jest 输出里能看到新模块的测试文件。
