当前位置: 首页 > 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 受保护标签?
  • 湖北奥莱斯轮胎公司逃避监管排放大气污染物被罚25万元
  • 水中托举救出落水孩童后遇难,42岁退役军人高武被确认为见义勇为
  • 消费者在天猫一旗舰店换手机电池疑遭套路致手机损坏,平台已介入
  • 世界哮喘日丨张旻:哮喘的整体诊断率不足三成,吸入治疗是重要治疗手段
  • 罗志田:文学革命的社会功能与社会反响
  • 河南博物院:警惕非官方网络平台 “买讲解保进馆” 等虚假信息