纽约市报道显示不正确的行号

nyc coverage shows incorrect line numbers

我的小组正在使用以下前端堆栈构建应用程序:

我们从 vue-cli 开始为我们的项目创建一个 Webpack 模板。在大多数情况下,一切都进行得很顺利。我们可以使用 Ava 对单独的 .vue 组件文件进行单元测试 vue-node 但是通过生成的测试覆盖率报告存在问题纽约。下面是我们的 package.json 文件的片段,其中定义了相关的 nyc 和 ava 部分:

"nyc": {
    "exclude": [
        "build",
        "config",
        "static",
        "tests"
    ],
    "extension": [
        ".js",
        ".vue"
    ]
},
"ava": {
    "require": [
        "./tests/unit/helpers/setup.js",
        "ignore-styles"
    ]
},

所有测试都成功通过。 nyc 报告显示以下内容:

问题是 Uncovered Lines 下列出的 #s 行不存在。 .vue 文件只有 402 行长,所以我不知道 nyc 报告中的这些行#s 来自哪里。

如有任何帮助,我们将不胜感激,并提前致谢。

我遇到了同样的问题,您需要安装 babel-plugin-istanbul 以使用 Istanbul 覆盖检测您的代码。该插件负责为您的代码获取正确的 sourceMap。所以你需要从 nyc.

禁用 instrument 和 sourceMap
npm install --save-dev babel-plugin-istanbul

.babelrc 文件(通常位于项目的根文件夹中)中添加以下内容,使其仅供测试环境使用:

{
  "env": {
    "test": {
      "plugins": [ "istanbul" ]
    }
  }
}

然后从 nyc 禁用仪器和 sourceMapbabel-plugin-istanbul 会处理的。并将 "require": "nyc" 替换为 "require": "babel-register".

"nyc": {
  "exclude": [
    "build",
    "config",
    "static",
    "tests"
  ],
  "extension": [
    ".js",
    ".vue"
  ],
  "require": [
    "./tests/unit/helpers/setup.js",
    "ignore-styles",
    "babel-register"
  ],
  "sourceMap": false,
  "instrument": false
},

现在您应该可以通过 nyc 获得报道。

NODE_ENV=test nyc ava

来源:

  1. https://www.npmjs.com/package/babel-plugin-istanbul
  2. https://github.com/istanbuljs/nyc#use-with-babel-plugin-istanbul-for-babel-support