什么是Vitest
- 由Vite驱动的下一代测试框架,可以与vite共用一个文件
- 由于Jest的大规模使用有与Jest相兼容的API
- Vite项目的首选测试框架和非Vite项目测试框架的可靠替代方案
- 使用Worker线程并发运行,具有良好的性能
总之,vitest是一个用vite驱动的下一代测试框架,具有实用的api和多线程运行的良好性能,逐渐成为Vite项目的首先测试框架,非vite项目测试框架的可靠替代方案
为什么要写测试
- 提高开发效率
- 更高阶的调试手法
- 验证局部逻辑一步到位
- 对修改代码更加自信
- 重构代码
- 新增功能
- 减少重复工作
实现功能的流程和逻辑
- 写代码→调试/验证
- 调试/验证→写代码
单元测试就是代替手动调试/验证的过程,减少重复的调试/验证的时间
写好单元测试后,可以一步到位验证局部逻辑,不用重复研究调用逻辑调试
单元测试对日常开发的作用
- 新增功能&修改bug
- 验证老功能有没有问题
- 提高自信心,出现问题可以及时发现
- 项目更加专业
- 重构 改善代码
- 当重构代码时,减少修bug的时间
- 改善代码时,可以及时验证
- 保持项目代码质量
- check别人提交的代码
- 提pr的时候保障没有破坏性更新
- 只有所有单元测试通过才能合并
搭建Vitest环境
新项目中使用
使用vue-cli构建一个新项目
1
pnpm create vue@next
启动单元测试用例
1
pnpm test:unit
老项目中使用
安装vitest
1
pnpm add vitest -D
在package.json中添加test命令
1
2
3
4
5{
"scripts": {
"test": "vitest"
}
}编写测试用例
- 一般以
.test.(ts|tsx|js|jsx)
、.spec.(ts|tsx|js|jsx)
结尾
1
2
3
4// sum.js
export function sum(a,b){
return a+b
}1
2
3
4
5
6
7// sum.test.js
import { expect, test } from 'vitest'
import { sum } from './sum'
test('adds 1+2 to equal 3', () => {
expect(sum(1, 2)).toBe(3)
})- 一般以
启动单元测试
1
pnpm test