vitest | 测试框架vitest | 总结笔记
测试框架 vitest 介绍
网址:Vitest | Next Generation testing framework
特点:①支持vite的生态系统,②兼容jest语法 ③HMR测试(速度快) ④ ESM(js的原生支持)

安装 Vitest: npm install -D vitest
断言:查看框架是否符合预期的结果。chaijs、should、expect、assert
测试文件的写法
文件取名:文件名中要有 test,即 xxx.test.ts
每个 case 测试一个功能点
引入库:
expect 断言库、test 测试用例:
import { export, test } from 'vitest'describe分组:
import { describe } from 'vitest'vi 模拟:
import { describe } from 'vitest'Mocked +断言--》可以获取一个对应的类型:
import { Mocked } from 'vitest'
test 测试:
test('测试名', () => {
expect().toBe()...
})
测试运行: npx test 文件名 ,每次保存后会重新运行。
expect 方法:
expect().toBe():两个严格相等(相当于===)
.toEqual():比里头的值是否相等(相当于==)
.toBeTruthy()是真,.toBeFalsy()是假expect(a)
.toBeGreaterThan(b):a比b大
.toBeLessThan():比小调用情况:
expect()
.toHaveBeenCalled() ,被调用过的expect()
.toHaveBeenCalledWith(参数),期待被调用成xx参数expect().toHaveBeenCalledTimes(次数),调用了几次

vi 模拟相关的方法
vi.fn() 回调函数
vi.synOn
(对象, '方法名'),
vi.mock('模拟的第三方库同名'),
第三方库的测试实现
目的:测试 request 函数,模拟 get 请求的对应返回,期待返回的数据能够正常出现。
写被测试的对象:发送一个请求,传入一个假的 url 。模拟get的实现,确定一个返回值 data,

问题:在测试文件中,引入request,模拟vi.mock('axios') 发现 axios.get 方法上 只有几个方法——》即 axios 会缺失对应的方法




解决:使用断言 const mockedAxios = axios as Mocked<typeof axios> (注:mockedAxios 可以获取一个对应的类型,Mocked 是 vitest 上的)

此时,在 .上面就不是原来的方法,而是 mockedAxios 之后得到的功能。一系列的方法,可完成对应的实现。

mockImplementation 手动写其实现。

快捷方法——
.get.mockResolveValue({data: 123})
.get.mockImplementation(() => Primise.resolve( {data: 123})等价于
.get.mockResolveValue({data: 123})

