Sta*_*rks 7 lcov istanbul vuejs2 nyc vue-cli-3
我已经尝试了几个小时,以便为我的新vue(基于打字稿的)项目(由vue-cli v3生成)启动并运行伊斯坦布尔代码覆盖率报告。
每当我运行测试时:(nodemon --exec nyc vue-cli-service test:unit)仅包含.ts文件,即使我已明确设置nyc应包括这些文件:
"nyc": {
"check-coverage": true,
"per-file": true,
"lines": 80,
"instrument": true,
"sourceMap": true,
"statements": 80,
"functions": 80,
"branches": 80,
"include": [
"apollo-server/**/*.{ts,vue}",
"apollo-server/*.vue",
"src/**/*.{ts,vue}",
"src/*.vue"
],
"exclude": [
],
"reporter": [
"lcov",
"text",
"text-summary"
],
"extension": [
".ts",
".vue"
],
"cache": true,
"all": true
}
Run Code Online (Sandbox Code Playgroud)
我也曾尝试设置nyc.instrument与nyc.sourceMap假以允许像这样的WebPack配置自定义加载器:
module.exports = {
baseUrl: process.env.NODE_ENV === 'production'
? '/'
: '/',
configureWebpack: config => {
// if (process.env.NODE_ENV === "coverage") {
config = Object.assign(config, {
module: Object.assign(config.module, {
rules: config.module.rules.concat([
{
test: /\.(ts|tsx|vue)$/,
enforce: 'post',
include: [
path.resolve('src'),
path.resolve('apollo-server')
],
loader: 'istanbul-instrumenter-loader'
}
])
})
})
// }
}
Run Code Online (Sandbox Code Playgroud)
我也尝试使用vue.config.js > chainWebpack挂钩执行此操作,并且在使用vue配置而不是package.json时,它根本不包含任何文件:
chainWebpack: config => {
if (process.env.NODE_ENV === "coverage") {
config.module
.rule("istanbul")
.test(/\.(ts|tsx|vue)$/)
.enforce("post")
.pre()
.include
.add(__dirname + "/apollo-server")
.add(__dirname + "/src")
.end()
.use("istanbul-instrumenter-loader")
.loader("istanbul-instrumenter-loader")
.options({
esModules: true
})
.end()
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是由于__dirname + [filename]我正在此配置中使用,尽管我不知道它应该是什么。我正在基于以下链接进行此操作:https : //github.com/vuejs/vue-cli/issues/1363,我应该在其中添加'src',尽管它会导致错误,指出所包含的路径不是绝对路径。
| 归档时间: |
|
| 查看次数: |
657 次 |
| 最近记录: |