5

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

  • VueJS
  • 网页包 2.2
  • AvaJS(用于单元测试)
  • nyc (Istanbul) 的测试覆盖率

我们开始vue-cli为我们的项目创建一个 Webpack 模板。在大多数情况下,一切都很顺利。我们可以使用 Ava使用vue-node对单独的 .vue组件文件进行单元测试,但是通过nyc生成的测试覆盖率报告存在问题。下面是我们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 来自哪里。

任何帮助将不胜感激,并提前感谢您。

4

1 回答 1

3

我遇到了同样的问题,您需要在babel-plugin-istanbul伊斯坦布尔覆盖范围内安装该工具。该插件负责sourceMap为您的代码获取正确的权限。所以你需要禁用仪器和sourceMapnyc

npm install --save-dev babel-plugin-istanbul

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

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

然后禁用仪器和sourceMapnycbabel-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
于 2017-07-30T19:20:10.910 回答