vue单元测试集成到现有项目

Vue CLI拥有开箱即用的通过Jest或Mocha进行单元测试的内置选项。还有官方的Vue Test Utils提供更多详细的指引和自定义设置。

为什么要手动搭建环境:由于Vue项目是团队基于webpack4搭建的,而非基于vueCli搭建,所以需要手动集成vue的单元测试到现有Vue项目中。

现有brick项目的基本环境:

    1.webpack4,

    2.vue:2.5.2  ;

    3.vue-template-compiler:2.5.2(和vue版本对应);

    4.babel/cli:^7.2.3

下面开始搭建环境

开始

1.首先我们用vuecli新建一个包含单元测试的项目


 看下package.json的内容:

{

  "name": "unitt",

  "version": "0.1.0",

  "private": true,

  "scripts": {

    "serve": "vue-cli-service serve",

    "build": "vue-cli-service build",

    "test:unit": "vue-cli-service test:unit"

  },

  "dependencies": {

    "core-js": "^2.6.5",

    "vue": "^2.6.10",

    "vue-router": "^3.0.3",

    "vuex": "^3.0.1"

  },

  "devDependencies": {

    "@vue/cli-plugin-babel": "^3.8.0",

    "@vue/cli-plugin-unit-mocha": "^3.8.0",

    "@vue/cli-service": "^3.8.0",

    "@vue/test-utils": "1.0.0-beta.29",

    "chai": "^4.1.2",

    "less": "^3.0.4",

    "less-loader": "^4.1.0",

    "vue-template-compiler": "^2.6.10"

  }

}

安装用yarn或者npm install ;接着跑下项目npm run serve;浏览器打开:http://localhost:8080/#/


这样项目就算跑成功了,

接下来看下单元测试的;

执行:npm run test:unit;输出如下;


说明单元测试成功;

2:集成到现有brick项目

1、观察demo的package.json发现里面的scripts用到vue-cli-service;看devDependencies里面包含: "@vue/cli-plugin-babel": "^3.8.0",

    "@vue/cli-plugin-unit-mocha": "^3.8.0",

    "@vue/cli-service": "^3.8.0",

    "@vue/test-utils": "1.0.0-beta.29",

    "chai": "^4.1.2",

    "core-js": "^2.6.5",

2、把这些复制到现有brick项目的dependencies里面,重新安装brick项目的包。

3、把 "test": "vue-cli-service test:unit",复制到brick项目的scripts里面;

4、把demo项目的src复制到brick,并且重命名为src2;

5、把demo项目的tests文件夹复制到brick。

6、执行test;发现报错提示:说当前vue版本太低不得低于2.5.18,于是升级到对应的vue版本,并且记得升级对应的vue-template-compiler;

7、再次执行test,就跑成功了。可以看到输出

到此单元测试环境已经集成到brick项目了。

在测试用例里面如何加入elementui框架?

在tests/unit/下面新建一个spec.js;


import Vue from 'vue';

import { shallowMount } from '@vue/test-utils';

import { expect } from 'chai';

import ElementUI from 'element-ui';

import BkTitle from '../../packages/material-component/title.vue';

Vue.use(ElementUI);

这样就可以测试有用到elementUI的组件了。

最后附上mocha的教程:阮1f-测试框架Mocha实例教程

你可能感兴趣的:(vue单元测试集成到现有项目)