本文介绍:
一、vue-cli3下jest环境的搭建
二、vue组件基本的测试方法
环境配置
vue-cli3 的插件使安装流程变得格外简单,经过 vue ui 启动可视化管理系统,在插件栏,点击 ‘添加插件’,搜索 @vue/cli-plugin-unit-jest,点击安装就能够了,对应命令行的 vue add @vue/cli-plugin-unit-jest 命令;这个过程其实是包含了安装和调用两个步骤,而且会把相关的依赖一并安装进来,这样就不须要本身一个一个的安装每一个依赖了。
安装完成后,会发现package.json 文件里多了这些依赖
在根目录会发现新生成了一个 test 文件夹,里面有一个 .spec.js 后缀的示例文件,用 packgae.json 里的 test:unit 指令直接运行,就能够调用 jest 的测试了,系统会匹配全部 .spec.js 或者 .test.js 后缀的文件并执行期中的代码,正常的结果以下。
环境配置到这里基本就结束了。
vue 单文件测试案例
下面我经过一个简单的 vue组件 来介绍最基础的测试用例编写,以element-ui 的 alert 组件为例,对于一个vue 组件,核心的测试指标因该是 props 接口,alert.vue 文件内定义了下面几个 prop:
个人测试代码以下,讲解部分都写到了注释里:
import { mount } from '@vue/test-utils'
import { mount } from '@vue/test-utils'
import Alert from '@/components/alert/index.vue';
describe('Alert', () => {
it('create', () => {
const wrapper = mount(Alert, {
propsData: {
title: 'title',
showIcon: true
}
})
expect(wrapper.find('.el-alert__title').text()).toEqual('title');
expect(wrapper.vm.visible).toBe(true);
});
it('type', () => {
const wrapper = mount(Alert, {
propsData: {
title: 'title',
showIcon: true,
type: 'success'
}
})
expect(wrapper.classes('el-alert--success')).toBe(true);
});
it('description', () => {
const wrapper = mount(Alert, {
propsData: {
title: 'Dorne',
description: 'Unbowed, Unbent, Unbroken',
showIcon: true
}
})
expect(wrapper.find('.el-alert__description').text()).toEqual('Unbowed, Unbent, Unbroken');
});
it('title slot', () => {
const wrapper = mount(Alert, {
propsData: {
title: 'Dorne'
},
slots: {
title: '<span>foo</span>'
}
})
expect(wrapper.find('.el-alert__title').text()).toEqual('foo')
});
it('close', () => {
const wrapper = mount(Alert, {
propsData: {
title: 'test'
}
})
wrapper.find('.el-alert__closebtn').trigger('click')
expect(wrapper.vm.visible).toBe(true)
});
});复制代码
上面的 测试用例,覆盖了 alert 组件的 prop 和 click 事件,这些是 vue 单文件测试中的最经常使用的部分,执行下 npm run test:unit 看下效果
表格里的是关于代码覆盖率的指标,默认是关闭的,须要在jest.config.js 中配置下,
"collectCoverage": true,
"collectCoverageFrom": ["**/*.{js,vue}", "!**/node_modules/**"]复制代码
Test Suites 为一组集合,一般一个测试文件对应一个 Test Suites, Tests 为全部测试实例的个数,咱们这里全部的测试实例都经过了测试,因此显示 passed,若是有某个 test 测试失败,会有 fail 输出:

Okay,以上就是 jest 在 vue 项目中的简单应用,但愿对你有帮助。
Jest 进阶部分
相关文档:
推荐文章: