目录

测试框架 vitest 介绍

测试文件的写法

文件取名:文件名中要有 test,即  xxx.test.ts 

引入库:

test 测试:

测试运行: npx test 文件名 ,每次保存后会重新运行。

★ expect 方法:

vi 模拟相关的方法

第三方库的测试实现

目的:测试 request 函数,模拟 get 请求的对应返回,期待返回的数据能够正常出现。

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

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

写测试用例

mount 将组件挂载

★ mount 方法: 

报错:ReferenceError: document is not defined.

  解决:需要自己配置,让其支持dom环境。

测试事件:


测试框架 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(次数),调用了几次

expect().toHaveProperty('')  是否有xx属性

expect().toBeDefined()  是否存在

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


写测试用例

目的: 将组件挂载到一个地方,测试它长啥样,是否符合我们传入的属性。

mount 将组件挂载

  引入:import { mount } from '@vue/test-utils'

  语法:mount( 组件,{ 要传入的具体内容 } )

★ mount 方法: 

mount().classes()  获取dom节点上的class

如何遍历:① mount().get('') 找不到,会测试中断; ②mount().find  找不到 不会中断。

取信息:① mount().get().html() html; ② mount().get().text()文本结构

mount().get().trigger('触发的事件名') 触发xx

mount().emitted()  显示当前所有触发的事件名称。

mount().attributes('属性')  对应节点的属性

mount().find('').element() 获取真正的dom节点

mount().find('').element().属性 获取真正的dom节点的某一个属性

.html(),供测试使用。

例子:


报错:ReferenceError: document is not defined.

 问题:需要挂载节点,就需要一个dom环境vitest 默认环境在 node下,而node 环境没有对应的 dom 环境。

  解决:需要自己配置,让其支持dom环境。

    如何配置 vitest。默认会读取 vite.config.ts,需要重载,即 新建一个 vitest.config.ts 文件

首行添加:       ///<reference types="vitest" /> 定义重载

       将对应的配置文件 vite.config.ts 拷贝到vitest.config.ts。将不必要的删掉,如 删掉 eslint()、resolve的路径问题。

      test 里头添加:

        全局打开  globals: true

        环境  environment:'jsdom' ,打开dom环境

      运行 npx vitest Button,(其中 Button 为文件名)查看结果 

测试事件:

 触发 click,MouseEvent 原生的事件

 测试disabled:以及其点击事件出发情况。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/81317.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/81317.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/81317.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32开发-作为TCP客户端发送数据到网络调试助手

​​代码&#xff08;作为TCP客户端&#xff09;​​ #include <SPI.h> #include <EthernetENC.h> // 使用EthernetENC库// 网络配置 byte mac[] {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MAC地址 IPAddress ip(192, 168, 1, 100); // ESP32的IP IPAddr…

HTML5 WebSocket:实现高效实时通讯

一、引言 在当今的 Web 开发领域,实时通讯功能变得越来越重要。例如在线聊天、实时数据更新等场景都需要客户端与服务器之间能够进行高效的双向数据传输。HTML5 引入的 WebSocket 协议为我们提供了一种强大的解决方案,它在单个 TCP 连接上实现了全双工通讯,极大地改善了传统…

速通Ollama本地部署DeepSeek-r1

下载 Ollama 前往 Ollama官网 下载客户端&#xff0c;下载完成后点击Install安装即可。 完成后会自动安装在C:盘的AppData文件夹下&#xff0c;命令行输入ollama后&#xff0c;显示下图中的信息表明安装成功。 下载模型 在官网界面点击 DeepSeek-R1 超链接 跳转到DeepSeek安装…

总结C++中的STL

1.STL 概述 STL 即标准模板库&#xff0c;是 C 标准程序库的重要组成部分&#xff0c;包含常用数据结构和算法&#xff0c;体现了泛型化程序设计思想&#xff0c;基于模板实现&#xff0c;提高了代码的可复用性 2.容器 2.1 序列容器&#xff1a; 1. vector 特性&#xff…

自动驾驶-一位从业两年的独特视角

时间简介 2023.03 作为一名大三学生&#xff0c;加入到某量产车企&#xff0c;从事地图匹配研发 2023.07 地图匹配项目交付&#xff0c;参与离线云端建图研发 2023.10 拿到24届校招offer 2024.07 正式入职 2025.01 离线云端建图稳定&#xff0c;开始接触在线车端融图研发 自动…

《软件设计师》复习笔记(11.1)——生命周期、CMM、开发模型

目录 一、信息系统生命周期 系统规划阶段 系统分析阶段&#xff08;逻辑设计&#xff09; 系统设计阶段&#xff08;物理设计&#xff09; 系统实施阶段 系统运行与维护阶段 二、能力成熟度模型&#xff08;CMM/CMMI&#xff09; CMM 五级模型 CMMI 两种表示方法 真题…

1.67g 雨晨 22635.5305 Windows 11 企业版 23H2 极速增强版

五一特别制作 &#xff08;主要更新简述&#xff09; 全程由最新YCDISM2025装载制作 1、可选功能&#xff1a; 添加&#xff1a; Microsoft-Windows-LanguageFeatures-Basic-en-us-Package Microsoft-Windows-LanguageFeatures-OCR-en-us-Package 2、功能增强&a…

爬虫逆向思维

爬虫逆向思维是指从目标网站的反爬机制入手&#xff0c;通过分析其防护逻辑来突破限制&#xff0c;获取数据的思路。以下是核心要点&#xff1a; 核心方向 - 分析反爬手段&#xff1a;如请求头校验、IP封禁、验证码、动态数据加密等。 - 模拟真实行为&#xff1a;伪造浏览器指…

手撕哈希表

引入&#xff1a;unordered_set /map是什么&#xff1f; 库里面除开set和map&#xff0c;还有unordered_set 和 unordered_map&#xff0c;区别在于&#xff1a; ①&#xff1a;set和map的底层结构是红黑树&#xff0c;而unordered_set和unordered_map的底层是哈希表 ②&…

基于Docker的内网穿透实战:frp 0.68 + Nginx最佳实践

在实际应用中&#xff0c;我们常常遇到这样的需求&#xff1a; 家里的NAS服务器、开发环境、测试服务&#xff0c;需要暴露到公网访问 企业内部系统&#xff0c;仅允许在特定域名或端口暴露&#xff0c;但没有公网IP 多个内网应用&#xff0c;希望通过一个统一的外网入口访问…

完美中国制度流程体系建设(70页PPT)(文末有下载方式)

资料解读&#xff1a;《完美中国制度流程体系建设》 详细资料请看本解读文章的最后内容。 该文档围绕完美中国制度流程体系建设展开&#xff0c;从风险管理流程等前期工作切入&#xff0c;全面剖析企业制度流程体系框架&#xff0c;结合案例指出常见问题&#xff0c;评估完美公…

计算机组成原理实验(5) 堆栈寄存器实验

实验五 堆栈寄存器实验 一、实验目的 1、熟悉堆栈概念 2、熟悉堆栈寄存器的组成和硬件电路 二、实验要求 按照实验步骤完成实验项目&#xff0c;对4个堆栈寄存器进行读出、写入数据操作。 三、实验说明 3.1 堆栈寄存器组实验构成&#xff08;图3-1&#xff09; 本系统…

RAGFlow报错:ESConnection.sql got exception

环境&#xff1a; Ragflowv0.17.2 问题描述&#xff1a; RAGFlow报错&#xff1a;ESConnection.sql got exception _ming_cheng_tks, 浙江, operatorOR;minimum_should_match30%) 2025-04-25 15:55:06,862 INFO 244867 POST http://localhost:1200/_sql?formatjson […

鼠标滚动字体缩放

在VsCode中编辑文件时&#xff0c;有时候发现Ctrl鼠标滚轮并不能缩放字体&#xff0c;下面是启用这个功能的方法。 第一步&#xff1a; 进入设置&#xff0c;可以从左下角按钮菜单进入&#xff0c;也可以使用【Ctrl,】。 第二步&#xff1a; 启用鼠标滚轮缩放功能 第三步&…

深度学习·经典模型·VisionTransformer

VIT embedding处理与标准的Transformer不同&#xff0c;其他基本一致 E&#xff4d;bedding Graph: ( H , W , C ) (H,W,C) (H,W,C) Patch: ( N , P 2 C ) (N,P^2C) (N,P2C),其中 N H ∗ W P 2 N\frac{H*W}{P^2} NP2H∗W​, P P P是patch的大小 注意的是,论文了保留与Bert的…

Python Selenium 完全指南:从入门到精通

Python Selenium 完全指南&#xff1a;从入门到精通 &#x1f4da; 目录 环境准备与基础入门元素定位与交互操作等待机制与异常处理面向对象封装与框架设计进阶技巧与最佳实践性能优化与调试技巧实战案例分析 环境准备与基础入门 1. 安装 Selenium 与浏览器驱动 安装 Selen…

基于ffmpeg的音视频编码

1 音频编码 本质上是由pcm文件转到一个协议文件 比如说aac协议 1.1 音频基本知识回归 比特率 比特率是指单位时间内传输或处理的比特&#xff08;bit&#xff09;数量&#xff0c;通常用 bps&#xff08;bits per second&#xff0c;比特每秒&#xff09;来表示。它是衡量数…

BT137-ASEMI机器人功率器件专用BT137

编辑&#xff1a;LL BT137-ASEMI机器人功率器件专用BT137 型号&#xff1a;BT137 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 批号&#xff1a;最新 引脚数量&#xff1a;3 封装尺寸&#xff1a;如图 特性&#xff1a;双向可控硅 工作结温&#xff1a;-40℃~150℃…

攻防世界 dice_game

dice_game ​​​​​​dice_game (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file game game: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]254…

Astral Ascent 星界战士(星座上升) [DLC 解锁] [Steam] [Windows SteamOS macOS]

Astral Ascent 星界战士&#xff08;星座上升&#xff09; [DLC 解锁] [Steam] [Windows & SteamOS & macOS] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章…