我的目标是能够在es6中编写src并测试文件,所有文件都在同一目录中(我希望我的测试文件与我的源文件并排),并获取原始文件的覆盖率报告
此时我能想到的最好的方法是使用以下命令将我的测试文件包含在覆盖率报告中:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover \
node_modules/.bin/_mocha -- 'src/**/*.spec.*.js'
我确实尝试使用cover -x 'src/**/*.spec.*.js'
,它也排除了来自转换的文件,mocha
然后无法运行测试。对于我的生活,我无法弄清楚如何做同样的事情:
./node_modules/.bin/babel-node node_modules/.bin/babel-istanbul \
cover -x 'src/**/*.spec.*.js' \
node_modules/.bin/_mocha -- --require babel-core/register 'src/**/*.spec.*.js'
这将使我的所有测试都运行良好,但会产生负面影响:
No coverage information was collected, exit without writing coverage information
所以我离我想要的东西并不太远,我想我只是错过了那里的最后一块,如果有人可以在这里帮忙,我会非常感激。
此致 d。
答案 0 :(得分:3)
从未获得-x
选项来执行我想要的操作。如果您不介意使用.istanbul.yml
文件,这对我来说可以从覆盖率报告中排除并排测试......
npm run cover
命令:
babel-node node_modules/.bin/babel-istanbul cover _mocha -- --opts mocha.opts
project_dir/mocha.opts
档案:
src/**/*.test.js
--compilers js:babel-register
--require babel-polyfill
project_dir/.istanbul.yml
档案:
instrumentation:
root: src
include-all-sources: true
verbose: true
excludes: ["*.test.js"]
reporting:
dir: "coverage"
答案 1 :(得分:0)
对于以后发现更多内容的人来说,具有mocha
,@babel
和nyc
的堆栈更容易配置(我说了很多吗?)。不再需要该babel-node
。
package.json
:
{
...
"scripts": {
"coveralls": "cat reports/coverage/lcov/info | coveralls", // <-- Used on CI
"coverage": "nyc --report-dir=reports/coverage npm test",
"test": "mocha \"src/**/*.test.js?(x)\""
},
"mocha": {
"require": [
"@babel/register",
...
]
},
...
}
这是我的.nycrc
的示例:
{
"all": true,
"cache": false,
"temp-dir": "./reports/nyc_output",
"check-coverage": false,
"require": [
"@babel/register"
],
"exclude": [
"dist/",
"reports/",
"src/**/*.test.js",
"src/**/*.test.jsx"
],
"extension": [
".js",
".jsx"
],
"reporter": [
"cobertura",
"lcov",
"html"
],
"watermarks": {
"statements": [50, 80],
"lines": [50, 80],
"functions": [50, 80],
"branches": [50, 80]
}
}