前端测试框架浅试
前端测试框架浅试
最近在对前端做Unit Test,用到一些测试框架,这里做一些简单的记录。
主要做的事情是针对一个React-hook和一些组件进行了测试,使用的是vitest,并且把原来的一些jest的测试迁移到了vitest上,并且删掉了jest的依赖。
vitest & jest
- jest: https://jestjs.io/zh-Hans/
- vitest: https://cn.vitest.dev/
vitest比较轻量级,基于vite驱动,如果使用了vite,vitest是个很好的选择。
vitest的速度比jest快很多,但是生态比起jest略逊一筹。
vitest和jest的api都是兼容的,vitest的文档目前还比较简单,如果对某些api有疑问,可以参考jest。
- describe和it
| 1 | import { describe, expect, it } from 'vitest'; | 
- expect
expect的api文档可以参考https://cn.vitest.dev/api/expect,这里介绍几个
- toBe比较对象类型的时候,比较的是引用,即使结构相同,如果不是同一个实例,也会报错。
- toStrictEqual和- toEqual都是比较对象的结构,但是存在以下区别(摘自官方文档):- 检查具有 undefined属性的键。 例如 使用.toStrictEqual时,{a: undefined, b: 2}与{b: 2}不匹配。
- 检查数组稀疏性。 例如 使用 .toStrictEqual时,[, 1]与[undefined, 1]不匹配。
- 检查对象类型是否相等。 例如 具有字段 a和b的类实例不等于具有字段a和b的文字对象。
 
- 检查具有 
- 但是toEqual对于undefined的检测还是较为严格(比起jest而言),因此必要时可以使用JSON.stringify,即
| 1 | expect(JSON.stringify(A)).toEqual(JSON.stringify(B)); | 
- 数组长度为空
| 1 | expect(myList).toHaveLength(0); | 
- 定义上下文context:假如说在某一系列测试中(itortest)需要相同的变量或函数,则可以将其添加在测试上下文之中,参考官方文档。
| 1 | // 定义上下文 | 
- 钩子函数beforeEach和afterEach:当在同一个describe之中,可能需要对每个测试it都定义一个上下文,这时候就可以使用beforeEach
| 1 | // 定义上下文类型 | 
cypress
这是个端到端的前端测试框架,还没有使用过,等我用过再来填坑。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gxyrious's Blog!









