如何给旧项目添加单元测试

如何给旧项目添加单元测试

如果你的项目是用vue-cli 2.x搭建的,且初始化项目的时候没有添加单元测试模块,后面需要手动引入,可按下面的方法添加。
1、在build目录下新建webpack.test.conf.js文件,内容如下:

'use strict';

const utils = require('./utils');
const webpack = require('webpack');
const merge = require('webpack-merge');
const baseWebpackConfig = require('./webpack.base.conf');

const webpackConfig = merge(baseWebpackConfig, {
    externals: [],
    module: {
        rules: utils.styleLoaders()
    },
    devtool: '#inline-source-map',
    resolveLoader: {
        alias: {
            'scss-loader': 'sass-loader'
        }
    },
    plugins: [
        new webpack.DefinePlugin({
            'process.env': '"testing"'
        })
    ]
});

// no need for app entry during tests
delete webpackConfig.entry;

module.exports = webpackConfig;

2、在项目根目录下新建test->unit文件夹,如下图所示:
在这里插入图片描述
其中specs文件夹中放我们写的测试用例,coverage放测试报告。
index.js文件的内容如下:

import Vue from 'vue';

Vue.config.productionTip = false;

// require all test files (files that ends with .spec.js)
const testsContext = require.context('./specs', true, /\.spec\.js$/);
testsContext.keys().forEach(testsContext);

// require all src files except main.js for coverage.
// you can also change this to match only the subset of files that
// you want coverage for.

const srcContext = require.context('../../src', true, /\.(vue|js)$/);

srcContext.keys().forEach(srcContext);

karma.conf.js文件的内容如下:

var webpackConfig = require('../../build/webpack.test.conf')

module.exports = function karmaConfig (config) {
  config.set({
    browsers: ['Chrome'],
    frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'],
    reporters: ['spec', 'coverage'],
    files: ['./index.js'],
    preprocessors: {
      './index.js': ['webpack', 'sourcemap']
    },
    webpack: webpackConfig,
    webpackMiddleware: {
      noInfo: true
    },
    coverageReporter: {
      dir: './coverage',
      reporters: [
        { type: 'lcov', subdir: '.' },
        { type: 'text-summary' }
      ]
    }
  })
}

3、根目录下的.babelrc文件中添加以下内容,生成覆盖率。

  "env": {
        "test": {
          "plugins": [ "istanbul" ]
        }
      }  

4、package.json文件中的scripts中添加单元测试的启动命令

 "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"  

5、cnpm install 以下安装包:
@vue/test-utils
chai
karma
karma-chrome-launcher
karma-coverage
karma-mocha
karma-phantomjs-launcher
karma-phantomjs-shim
karma-sinon-chai
karma-sourcemap-loader
karma-spec-reporter
karma-webpack
mocha
sinon
sinon-chai
babel-plugin-istanbul
6、在项目根目录下执行npm run unit就可以看到测试用例的执行情况

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值