【问题标题】:VUE CLI 3 - Testing Single-File Components with Mocha + webpackVUE CLI 3 - 使用 Mocha + webpack 测试单文件组件
【发布时间】:2019-06-24 13:10:07
【问题描述】:

我正在尝试遵循此处提到的文档Vue Test Utils

以下是我目前设置的内容。

项目设置: Vue CLI 3.2.1 和 Node v8.11.2

devDependencies

"@vue/cli-plugin-babel": "^3.2.0",
"@vue/cli-plugin-eslint": "^3.2.0",
"@vue/cli-service": "^3.2.0",
"@vue/test-utils": "^1.0.0-beta.28",
"babel-eslint": "^10.0.1",
"babel-plugin-istanbul": "^5.1.0",
"cross-env": "^5.2.0",
"eslint": "^5.8.0",
"eslint-config-standard": "^12.0.0",
"eslint-loader": "^2.1.1",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"eslint-plugin-vue": "^5.0.0-0",
"expect": "^24.0.0",
"istanbul-instrumenter-loader": "^3.0.1",
"jsdom": "^13.2.0",
"jsdom-global": "^3.0.2",
"mocha": "^5.2.0",
"mocha-webpack": "^1.1.0",
"node-sass": "^4.10.0",
"nyc": "^13.1.0",
"sass-loader": "^7.1.0",
"vue-template-compiler": "^2.5.17",
"webpack-cli": "^3.2.1",
"webpack-node-externals": "^1.7.2"

还有nyc 配置在package.json 内:

"nyc": {
    "include": [
      "src/**/*.(js|vue)"
    ],
    "instrument": false,
    "sourceMap": false
  },

vue.config.js

const nodeExternals = require('webpack-node-externals')
const path = require('path')
let isCoverage = process.env.NODE_ENV === 'coverage';

module.exports = {
    mode: 'development',
    externals: [nodeExternals()],
    devtool: 'inline-cheap-module-source-map',
    output: {
        // use absolute paths in sourcemaps (important for debugging via IDE)
        devtoolModuleFilenameTemplate: '[absolute-resource-path]',
        devtoolFallbackModuleFilenameTemplate: '[absolute-resource-path]?[hash]'
    },

    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/
            }
        ].concat(
            isCoverage ? {
                test: /\.(js|ts)/,
                include: path.resolve('src'),
                loader: 'istanbul-instrumenter-loader',
                options: { esModules: true }
            }: [],
            {
                test: /.js$/,
                exclude: /(node_modules|bower_components)/,
                loader: 'babel-loader',
            },
            {
                test: /\.ts$/,
                exclude: /(node_modules|bower_components)/,
                loader: 'ts-loader'
            }
        )
    },
    target: 'node',
    externals: [nodeExternals()],
    devtool: "inline-cheap-module-source-map"
}

我的测试文件夹结构如下:

我的测试代码如下所示:

到目前为止,我尝试运行这些命令:

"test-ci": "mocha-webpack --webpack-config vue.config.js --require test/setup.js test/**/*.js"
"cover": "cross-env NODE_ENV=coverage nyc --reporter=lcov --reporter=text npm run test-ci"

如果我运行 test-ci,它将输出:WEBPACK Compiled successfully in 631ms 但是如果我运行 cover 之后它只是一个空白页,那么输出会显示为 nyc 没有记录任何内容:

我在这里做错了什么?

【问题讨论】:

    标签: testing vue.js webpack mocha.js vue-cli-3


    【解决方案1】:

    我遇到了同样的问题,包含 vue 和 js 文件分别为我修复了它。

    "nyc": {
        "include": [
          "src/**/*.js",
          "src/**/*.vue"
        ],
        "instrument": false,
        "sourceMap": false
      },
    

    【讨论】:

      【解决方案2】:

      尽管使用 node v10.16.0 和 vue-cli 3.11.0,我在这里遇到了同样的问题。 Mohit 的回答无效,但以下语法有效:

      // package.json
        "nyc": {
              "extension": [
                  ".js",
                  ".vue"
              ]
        },
      

      【讨论】:

        猜你喜欢
        • 2019-03-20
        • 2023-01-03
        • 2019-02-13
        • 2021-08-01
        • 1970-01-01
        • 2018-09-10
        • 2019-02-07
        • 2019-07-02
        • 1970-01-01
        相关资源
        最近更新 更多