【问题标题】:nyc coverage shows incorrect line numbersnyc coverage 显示不正确的行号
【发布时间】:2017-10-22 13:29:28
【问题描述】:

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

  • VueJS
  • Webpack 2.2
  • AvaJS(用于单元测试)
  • 纽约(伊斯坦布尔)的测试覆盖率

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

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

【问题讨论】:

  • 你设置好source maps了吗?
  • 感谢您的回复。是的,我看到了,但不知道该怎么做。我之前也没有意识到我猜这是必要的。只是在 package.json 的 nyc 配置中设置 sourceMaps: true 吗?因为我确实尝试过,但没有运气。
  • 我所知道的一切我就读到了:确保您正在测试的代码包含内联源映射或引用源映射文件。如果你使用babel-register,你可以在你的 Babel 配置中将sourceMaps 选项设置为inline
  • 知道了。是的,我仍然很难过。无法弄清楚如何将 sourcemaps 选项集成到我当前的配置中。目前还没有工作。

标签: unit-testing vue.js istanbul ava


【解决方案1】:

我遇到了同样的问题,您需要安装 babel-plugin-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

【讨论】:

  • 优秀。我的nyc ... 命令工作得很好,除了行号完全关闭。为伊斯坦布尔添加 Babel 插件并确保 nyc 中的 "sourceMap""instrument" 关闭即可。
  • 找不到模块 'babel-register' 是否需要其他依赖项?
猜你喜欢
  • 1970-01-01
  • 2020-05-05
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
相关资源
最近更新 更多