我正在尝试将覆盖率报告生成添加到打字稿库项目中。
布局包括以下目录:
project
├─ src
│ ├─ lib ## project code (typescript), *.tsx
│ ├─ test ## test specs (typescript), *.spec.tsx
│ └─ @types ## types I made for a few dependencies that didn't have them
└─ build
├─ lib ## compiled project code (ES5 + type info, with inline sourcemaps), *.js and *.d.ts
└─ test ## compiled test specs (ES5 + type info, with inline sourcemaps), *.spec.js and *.spec.d.ts
我有一个测试脚本package.json
似乎可以正常工作:
"test": "mocha --reporter mocha-multi --reporter-options mocha-multi=mocha-multi.json --recursive build/test/**/*.spec.js",
(它生成 1413 行输出;目前所有测试都通过了)
我试图弄清楚如何nyc
运行
- 中的所有测试
test
都运行 test
覆盖率报告中不包含任何文件lib
覆盖率报告中包含所有代码文件lib
覆盖率报告中不包含任何类型信息文件
我想我用这个命令得到了#1:
npx nyc mocha --cache --reporter nyan build/test
有这个输出:
872 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_,------,
0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_| /\_/\
0 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-^|__( ^ .^)
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- "" ""
872 passing (20s)
---------------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---------------------|----------|----------|----------|----------|-------------------|
All files | 88.97 | 91.49 | 84.09 | 89.11 | |
lib | 88.51 | 91.49 | 83.33 | 88.62 | |
Awaitable.tsx | 88.51 | 91.49 | 83.33 | 88.62 |... 79,405,419,420 |
test | 100 | 100 | 100 | 100 | |
Abortable.spec.tsx | 100 | 100 | 100 | 100 | |
Awaitable.spec.tsx | 100 | 100 | 100 | 100 | |
---------------------|----------|----------|----------|----------|-------------------|
(但更丰富多彩;我正在使用--reporter nyan
,因为我不想重复测试脚本的 1413 行输出)
该输出未能实现目标 2 和 3;这个问题是关于目标 2:
我如何告诉 nyctest
从覆盖率报告中排除?
(报告错误也让我感到困扰——没有涵盖其他测试的测试,但这不是这个问题的意义所在。)
我尝试在命令中添加各种包含和排除项,但都没有影响输出:
- -x 构建/测试
- -x '**/*.spec.js'
- -x '**/*.spec.tsx'
- -x '构建/测试/**'
- -x 测试
- -x '构建/测试/**/*.spec.js'
- -x '构建/测试/**/*.spec.tsx'
- -x '测试/**'
- -x '测试/**/*.spec.js'
- -x '测试/**/*.spec.tsx'
- -n 库
- -n 构建/库
- -n 源/库
- -x 构建/库
- -x 库
- -x 源/库
- -X 测试
- -X 构建/测试
- -X 源/测试
(如您所见,我不确定这些 basedir 是什么;我没想到会在报告中看到源文件名,但nyc
显然正在做一些事情,但在报告中都src
没有build
显示。 )
阅读此答案后,我尝试了包含选项,但没有帮助。在为 lib 添加排除项并没有看到任何效果后,我得到的印象是排除选项不起作用。我不会按照这个答案中的建议切换到 ES6,直到与我一起工作的人仍然支持 IE。