【问题标题】:Mocha typescript test methods running but nyc not covering those lines of codeMocha typescript 测试方法正在运行,但 nyc 没有覆盖这些代码行
【发布时间】:2020-10-05 16:30:39
【问题描述】:
我使用 nyc 来获取我用 typescript 编写的 nodeJs api 的代码覆盖率。
我已经为所有 api 和控制器编写了测试方法。 Nyc 已配置并且可以正常工作以获取控制器的覆盖范围,但即使在所有 api 都进行了单元测试之后,nyc 也没有覆盖 API 代码块。
用于运行测试方法的脚本 -
"test":"mocha --timeout 99999 -r ts-node/register ./test/**/*.spec.ts --recursive --exit"
"coverage":"nyc --reporter text-summary --reporter html --include src npm test"
src 包含所有的控制器和 api 文件。
【问题讨论】:
标签:
typescript
mocha.js
code-coverage
nyc
【解决方案1】:
typescript +mocha + nyc 的组合可能很难正确处理,因为许多小细节会弄乱正确的封面报告。
具体来说,您似乎缺少所需的文件扩展名和其他一些与打字稿相关的设置。
这是一个有效的 .nycrc.yml
extends: "@istanbuljs/nyc-config-typescript"
reporter:
- html
- lcovonly
- clover
# those 2 are for commandline outputs
- text
- text-summary
report-dir: coverage
我有一个非常详细的 typescript 完整示例,其中包含最新版本、linting 和质量设置以及一些更复杂的模拟和存根测试。它还涵盖了大多数设置在保留正确覆盖范围的同时不执行的完全非调用文件。也许它可以帮助你:)
https://github.com/Flowkap/typescript-node-template
还要注意 .mocharc.yml 用于所需的 mocha 配置。将这些与纽约市对齐确实很棘手。还包括 VsCode 启动配置。