我的小组正在使用以下前端堆栈构建应用程序:
我们从
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
报告显示以下内容:问题在于,“未发现的行”下列出的行号不存在。 .vue文件只有402行,因此我无法确定nyc报告中这些行的来源。
任何帮助将不胜感激,并提前感谢您。
最佳答案
我遇到了同样的问题,您需要安装babel-plugin-istanbul
来使用Istanbul覆盖范围检查代码。该插件负责为您的代码获取正确的sourceMap
。因此,您需要从sourceMap
禁用instrument和nyc
。
npm install --save-dev babel-plugin-istanbul
在
.babelrc
文件(通常在项目的根文件夹中找到)中,添加以下内容,使其仅在您的测试环境中使用:{
"env": {
"test": {
"plugins": [ "istanbul" ]
}
}
}
然后从
sourceMap
禁用instrument和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
资料来源:
关于unit-testing - 纽约市覆盖显示不正确的行号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44120502/