babel-istanbul cover从报告中排除文件,但保持转换

时间:2015-12-18 00:57:18

标签: mocha code-coverage ecmascript-6 babeljs istanbul

我的目标是能够在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。

2 个答案:

答案 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@babelnyc的堆栈更容易配置(我说了很多吗?)。不再需要该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]
  }
}