前端测试框架浅试
前端测试框架浅试
最近在对前端做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:假如说在某一系列测试中(
it
ortest
)需要相同的变量或函数,则可以将其添加在测试上下文之中,参考官方文档。
1 | // 定义上下文 |
- 钩子函数
beforeEach
和afterEach
:当在同一个describe之中,可能需要对每个测试it都定义一个上下文,这时候就可以使用beforeEach
1 | // 定义上下文类型 |
cypress
这是个端到端的前端测试框架,还没有使用过,等我用过再来填坑。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Gxyrious's Blog!