如何配置伊斯坦布尔覆盖率报告以排除某些来源?

时间:2015-11-11 08:00:20

标签: javascript node.js mocha istanbul

我正在开发nodeJS +角度堆叠应用程序。要为后端生成代码覆盖率报告,我使用istanbul和mocha。但是,覆盖率报告显示的数字不正确。

如果我运行istanbul cover _mocha --print detail /path/to/tests*,我会获得全面覆盖(但仅限于测试规范要求的文件)。另一方面,如果我运行istanbul cover _mocha --print detail --include-all-sources /path/to/tests*伊斯坦布尔也检查前端代码的测试覆盖率(角度,我分别用karma / jasmine测试)。

如何运行istanbul以便它只包含后端源文件?

3 个答案:

答案 0 :(得分:2)

根据伊斯坦布尔帮助封面输出

$ ./node_modules/.bin/istanbul help cover

Usage: istanbul cover [<options>] <executable-js-file-or-command> [--<arguments-to-jsfile>]

Options are:

  --config <path-to-config>
          the configuration file to use, defaults to .istanbul.yml

  --root <path>
          the root path to look for files to instrument, defaults to .

  -x <exclude-pattern> [-x <exclude-pattern>]
          one or more glob patterns e.g. "**/vendor/**"

  -i <include-pattern> [-i <include-pattern>]
          one or more glob patterns e.g. "**/*.js"

  --[no-]default-excludes
          apply default excludes [ **/node_modules/**, **/test/**,
          **/tests/** ], defaults to true

  --hook-run-in-context
          hook vm.runInThisContext in addition to require (supports
          RequireJS), defaults to false

  --post-require-hook <file> | <module>
          JS module that exports a function for post-require processing

  --report <format> [--report <format>]
          report format, defaults to lcov (= lcov.info + HTML)

  --dir <report-dir>
          report directory, defaults to ./coverage

  --print <type>
          type of report to print to console, one of summary (default),
          detail, both or none

  --verbose, -v
          verbose mode

  --[no-]preserve-comments
          remove / preserve comments in the output, defaults to false

  --include-all-sources
          instrument all unused sources after running tests, defaults to
          false

  --[no-]include-pid
          include PID in output coverage filename

您应该使用-X从coverage报告中排除某些文件。即:

$ ./node_modules/.bin/istanbul cover ./node_modules/mocha/bin/_mocha test -X dist/index.js

将执行测试,并忽略覆盖率报告中的dist / index.js文件

答案 1 :(得分:0)

我也遇到了类似的情况,因此认为值得分享,如果它可以帮助某人,虽然它是一个旧帖子。 Istanbul 在运行命令时将当前目录(。)作为coverage目录。为了仅将特定目录包含到覆盖范围,请使用"--root /dir/"选项。这将仅为该目录中的文件生成覆盖率报告。

答案 2 :(得分:-1)

您是否将后端代码和前端代码放在不同的目录中?例如/test/api/test/dashboard或其他。如果您将代码分开,您可以告诉伊斯坦布尔一次报告每个代码:

istanbul cover _mocha test/api/**/*.js

有道理吗?这对你有用吗?

让我知道。