We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vue-cli 已经完美集成了单元测试的插件,可以无压力添加 UT。如果现有的项目没有使用 vue-cli,则需要手动添加 UT 工具链
官方支持两种框架 Jest 和 Mocha,本文以 Jest 为例
babel7 @vue/test-utils jest [email protected] // 3.x 不支持 babel7+
package.json 中添加相关 script
package.json
{ "scripts": { // 其他脚本 "test": "jest" } }
Jest 配置文件。在根目录创建 jest.config.js。所有配置,请参考官网文档
jest.config.js
module.exports = { moduleFileExtensions: [ 'js', 'json', 'vue' ], transform: { '.*\\.(vue)$': 'vue-jest', '^.+\\.js$': '<rootDir>/node_modules/babel-jest' // 使用 babel }, moduleNameMapper: { '^@/(.*)$': '<rootDir>/src/$1' // 映射目录的别名 }, testPathIgnorePatterns: [ '<rootDir>/src/router/modules/test.js' // 乎略的文件 ] }
添加测试覆盖率报告,参考文档 (待验证)
{ // ... "collectCoverage": true, "collectCoverageFrom": ["**/*.{js,vue}", "!**/node_modules/**"] }
原则上所有代码都需要单元测试。我们的追求是覆盖率 100%。然而现实很骨干,大家业务繁忙,都没(lan)空(de)写单元测试。所以,我们可以考虑为以下两种代码写单测
更多功能(包括 Mock 等),请阅读 Jest 官方文档
// utils.test.js import { add } from './utils' test("add two numbers", () => { expect(add(1, 2)).toBe(3) })
更多厉(zhuang)害(bi)的写法,请阅读 Vue Test Utils 官方文档。文档不长,很快就能读完。
import { shallowMount, createLocalVue } from '@vue/test-utils' import Vuex from 'vuex' import XHeader from '../x-header' const localVue = createLocalVue() // 注册 Vuex 的 $store localVue.use(Vuex) // 注册 directive localVue.directive('user-directive', function(){}) describe('XHeader', () => { let store beforeEach(() => { store = new Vuex.Store({ state: {} } }) }) test('is a Vue instance', () => { const wrapper = shallowMount(XHeader, { localVue, store }) expect(wrapper.isVueInstance()).toBeTruthy() }) })
$ npm run test
强烈推荐在以下场景跑单元测试
The text was updated successfully, but these errors were encountered:
No branches or pull requests
为什么要单元测试(单测,UT)?
提高代码质量
重构无压力
给现有的 Vue 项目添加单元测试
vue-cli 已经完美集成了单元测试的插件,可以无压力添加 UT。如果现有的项目没有使用 vue-cli,则需要手动添加 UT 工具链
测试框架
官方支持两种框架 Jest 和 Mocha,本文以 Jest 为例
相关依赖包
配置
package.json
中添加相关 scriptJest 配置文件。在根目录创建
jest.config.js
。所有配置,请参考官网文档添加测试覆盖率报告,参考文档 (待验证)
编写单元测试
需要为哪些代码写单测?
原则上所有代码都需要单元测试。我们的追求是覆盖率 100%。然而现实很骨干,大家业务繁忙,都没(lan)空(de)写单元测试。所以,我们可以考虑为以下两种代码写单测
工具类函数的单测
组件的单测
Run!
强烈推荐在以下场景跑单元测试
The text was updated successfully, but these errors were encountered: