Istanbul ignore next无法忽略@ContentChildren装饰的setter方法,Jest覆盖率仍提示未覆盖
Istanbul ignore next无法忽略@ContentChildren装饰的setter方法,Jest覆盖率仍提示未覆盖
我之前也碰到过Angular里这种带装饰器的setter没法用单条/* istanbul ignore next */跳过覆盖率检查的情况,确实有点坑!
问题出在@ContentChildren这类装饰器上——编译时它会生成额外的关联代码,单条的忽略注释只能覆盖装饰器本身,没办法覆盖后面的setter定义部分,所以Jest的覆盖率工具还是会检测到setter的入口没被覆盖。
给你个可靠的解决方案:用/* istanbul ignore start */和/* istanbul ignore end */把整个装饰器加setter的代码块完全包裹起来,这样就能彻底跳过这部分的覆盖率检查了:
/* istanbul ignore start */ @ContentChildren(ElementRef, {descendants: true}) set inputs(inputs: QueryList<ElementRef>) { this._inputs = inputs; } /* istanbul ignore end */
如果之后你需要保留装饰器的覆盖率,只忽略setter的逻辑,那也可以尝试把忽略注释放在setter内部的第一行,但针对你现在的场景,直接包裹整个块是最省心的做法。
备注:内容来源于stack exchange,提问作者java2017
相关产品推荐
相关产品推荐

