3

我正在使用 mocha 进行单元测试并希望添加代码覆盖率。为此,我添加了 nyc、istanbul-instrumenter-loader 和 babel-plugin-istanbul,它适用于 js 文件,但对于 .vue 文件会发生错误:“TypeError: Cannot read property 'fileCoverage' of undefined”。请帮我

包.json

{
"name": "ZINGUI",
"version": "1.0.0",
"description": "ZINGWHEEEE",
"author": "John Matos <rDr4g0n@gmail.com>",
"private": true,
"browserslist": [
    "defaults"
],
"workspaces": [
    "packages/z-common",
    "packages/z-search",
    "packages/z-ui",
    "packages/z-admin-module",
    "packages/z-smartviewz-module",
    "packages/z-theme",
    "packages/z-dashboard-module",
    "packages/z-dashboard-base-tiles",
    "packages/z-events-module",
    "packages/z-user-module",
    "packages/z-mock-client",
    "packages/z-catalog"
],
"scripts": {
    "dev": "yarn run z-ui",
    "z-ui": "yarn run --cwd=packages/z-ui dev",
    "watch": "node scripts/watch.js",
    "build": "npm-run-all lint test build-ui",
    "build-ui": "yarn run --cwd=packages/z-ui build",
    "lint": "yarn workspaces run lint",
    "test": "yarn workspaces run test",
    "test:coverage": "nyc yarn run test",
    "bootstrap": "yarn install",
    "clean": "yarn workspaces run clean && rm -rf node_modules",
    "add-package": "cd packages && vue init ../scripts/package-template",
    "playground": "yarn run --cwd=playground playground",

},
"dependencies": {
    "@vue/composition-api": "^0.3.4",
    "atob": "^2.1.0",
    "cryptiles": "^4.1.2",
    "dot-prop": "^4.2.1",
    "fstream": "^1.0.12",
    "graphql": "^0.13.2",
    "sshpk": "^1.13.2",
    "stringstream": "^0.0.6",
    "vue": "^2.6.6",
    "vue-router": "3.0.1",
    "vuetify": "2.4.0",
    "vuex": "^3.5.1",
    "clone": "^2.1.2",
    "cookies-js": "^1.2.3",
    "d3": "^5.7.0",
    "d3-format": "^1.4.3",
    "deep-equal": "^2.0.1",
    "deepmerge": "^4.2.2",
    "graphql-tag": "^2.10.3",
    "humanize": "^0.0.9",
    "humanize-duration": "^3.22.0",
    "moment": "^2.24.0",
    "throttle-debounce": "^2.2.1",
    "yamr-js": "zenoss/yamr-js#4.6.2",
    "z-admin-module": "^1.0.0",
    "z-catalog": "^1.0.0",
    "z-common": "^1.0.0",
    "z-dashboard-module": "^1.0.0",
    "z-events-module": "^1.0.0",
    "z-mock-client": "^1.0.0",
    "z-search": "^1.0.0",
    "z-smartviewz-module": "^1.0.0",
    "z-theme": "^1.0.0",
    "z-user-module": "^1.0.0",
    "z-in-time": "zenoss/z-in-time#1.1.7"
},
"devDependencies": {
    "chai-sorted": "^0.2.0",
    "backstopjs": "^4.5.0",
    "babel-plugin-istanbul": "^6.0.0",
    "chai": "^4.1.2",
    "core-js": "3",
    "chokidar": "^2.0.1",
    "eslint": "^4.19.1",
    "eslint-config-airbnb-base": "^13.0.0",
    "eslint-friendly-formatter": "^3.0.0",
    "eslint-import-resolver-webpack": "^0.8.3",
    "eslint-loader": "^2.0.0",
    "eslint-plugin-import": "^2.20.0",
    "eslint-plugin-vue": "^6.2.2",
    "eslint-plugin-vuetify": "^1.0.0-beta.7",
    "inject-loader": "^4.0.1",
    "istanbul-instrumenter-loader": "^3.0.1",
    "jsdom": "^11.12.0",
    "jsdom-global": "^3.0.2",
    "mocha": "^5.2.0",
    "mocha-webpack": "2.0.0-beta.0",
    "npm-run-all": "^4.1.2",
    "nyc": "^15.1.0",
    "sinon": "^6.1.4",
    "sinon-chai": "^3.2.0",
    "webpack-merge": "^4.1.0",
    "webpack-node-externals": "^1.7.2",
    "yargs": "^15.1.0"
}

}

.babelrc

{
  "env": {
    "development": {
      "presets": [
        ["env", { "modules": false }],
        "stage-3"
      ]
    },
    "production": {
      "presets": [
        ["env", { "modules": false }],
        "stage-3"
      ]
    },
    "test": {
      "presets": [
        ["env", {
          "modules": false,
          "targets": { "node": "current" }
        }],
        "stage-3"
      ],
        "plugins": [
            ["istanbul", {
                "exclude": [
                    "**/*.spec.js"
                ]
            }]
        ]
    }
  }
}

webpack.base.conf.js

            {
            test: /\.js$|\.vue$/,
            use: {
                loader: "istanbul-instrumenter-loader",
                options: { esModules: true }
            },
            enforce: 'post',
            exclude: /node_modules|\.spec\.js$/
        }
4

0 回答 0