我的小组正在使用以下前端堆栈构建应用程序:
我们从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"
]
},
问题是 Uncovered Lines 下列出的行#s不存在。 .vue 文件只有402行,所以我无法确定nyc报告中这些行#的来源。
任何帮助将不胜感激,并提前感谢您。
答案 0 :(得分:2)
我遇到了同样的问题,您需要安装babel-plugin-istanbul
,以便在伊斯坦布尔覆盖范围内检测您的代码。此插件负责为您的代码获取正确的sourceMap
。因此,您需要从sourceMap
停用工具和nyc
。
npm install --save-dev babel-plugin-istanbul
在.babelrc
文件(通常位于项目的根文件夹中)中,添加以下内容,以便它仅供您的测试环境使用:
{
"env": {
"test": {
"plugins": [ "istanbul" ]
}
}
}
然后从sourceMap
停用工具和nyc
。 babel-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
来源: