当前位置: 首页 > news >正文

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})

 

相关文章:

  • 数据库学习笔记(十三)---存储过程
  • npm error code CERT_HAS_EXPIRED
  • 【机器学习】人工智能在电力电子领域的应用
  • 代码随想录算法训练营第60期第二十一天打卡
  • SpringCloud组件——Gateway
  • Android adb 安装应用失败(安装次数限制)
  • Android Compose vs 传统View系统:全面对比与选型指南
  • Linux 定时备份到windows 方案比较
  • MCP Servers玩玩WebUI自动化
  • 凸包问题 Graham 扫描算法 MATLAB
  • Android Framework 探秘
  • 大模型训练平台:重构 AI 研发范式的智慧基建
  • 新ubuntu物理机开启ipv6让外网访问
  • RAG产品的核心功能原型及构成模块
  • 【星海出品】K8S调度器leader
  • 企业用电管理革新利器 —— Acrel-3000 电能管理系统应用解析
  • 腾讯云服务器独立ip服务器优点是什么?服务器需要固定ip吗?
  • 【MCP教程系列】如何自己打包MCP服务并部署到阿里云百炼上【nodejs+TypeScript】搭建自己的MCP【Cline】
  • 计网分层体系结构(包括OSI,IP,两者对比和相关概念)
  • 如何创建并使用极狐GitLab 受保护标签?
  • 第二艘国产大型邮轮实现坞内起浮,重点强化邮轮供应链本土化建设
  • 央行副行长:我们在研究丰富政策工具箱,将适时推出增量政策
  • 核电开闸!国常会核准10台新机组,拉动超2000亿投资,新项目花落谁家?
  • 西北大学党委副书记吕建荣调任西安财经大学党委书记
  • 视频丨伊朗阿巴斯港一处油罐发生高强度爆炸:造成大面积破坏,伤亡不明
  • 时代邻里:拟收购成都合达联行科技剩余20%股权