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

【Vitest】单元测试

文章目录

  • 测试:Vitest
        • 一、安装
        • 二、断言
        • 三、回调测试
        • 四、对象方法
        • 五、模拟第三库

测试:Vitest

一、安装
npm install vitest

创建文件:example.test.ts

运行测试:

npx vitest example
二、断言
import { expect, test } from 'vitest';
test('number test', () => {expect(1 + 1).toBe(2);
});
test('string test', () => {const name = 'MaxWell';expect(name).toBe('MaxWell');
});

结果:2 pass

三、回调测试

监控回调函数是否被调用

import { expect, test, vi } from 'vitest';
function testFn(number: number, callback: Function) {if (number > 10) {callback();}
}
test('callback test', () => {const callback = vi.fn();testFn(12, callback);expect(callback).toHaveBeenCalled(); //callback是否被调用
});

结果:pass 1

四、对象方法

监控对象上的方法是否被调用

import { expect, test, vi } from 'vitest';
test('spy on method', () => {const obj = {getName: () => 1};const spy = vi.spyOn(obj, 'getName');obj.getName();expect(spy).toHaveBeenCalled();
});

结果:pass 1

五、模拟第三库

由于我们不可能等待异步请求的返回结果来测试,这样会耗费太多事件,所以使用 mock 模拟

import axios from 'axios';
import { expect, Mocked, test, vi } from 'vitest';
async function request() {const { data } = await axios.get('example.url');return data;
}
// 使用 vi.mock 模拟 axios 模块的所有方法
vi.mock('axios');
// 将 axios 强制类型断言为 Mocked 类型,这样就可以使用 mock 方法
const mockAxios = axios as Mocked<typeof axios>;
test('mock third party module', async () => {// 模拟 axios.get 的返回值mockAxios.get.mockResolvedValue({ data: 1234 });const result = await request();expect(result).toBe(1234);
});

结果:pass 1

相关文章:

【Vitest】单元测试

文章目录 测试&#xff1a;Vitest一、安装二、断言三、回调测试四、对象方法五、模拟第三库 测试&#xff1a;Vitest 一、安装 npm install vitest创建文件&#xff1a;example.test.ts 运行测试&#xff1a; npx vitest example二、断言 import { expect, test } from vi…...

达梦数据库从单主模式转换为主备模式

目录标题 达梦数据库单主转主备配置笔记前期准备服务器环境数据库安装磁盘空间 流程流程图说明基于脱机备份方式的单实例转主备流程图详细步骤说明 详细步骤1. 检查主库归档模式2. 配置主库配置文件dm.ini 文件dmmal.ini 文件dmarch.ini 文件 3. 备份主库数据库4. 备库配置新建…...

【Elasticsearch】nested聚合

在 Elasticsearch 中&#xff0c;嵌套聚合&#xff08;nestedaggregation&#xff09;的语法形式用于对嵌套字段&#xff08;nestedfields&#xff09;进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型&#xff0c;用于存储数组中的对象&#xff0c;这些对象需要独…...

虹科波形小课堂 | 三分钟掌握车辆相对压缩测试!不拆发动机、不测缸压就能判断故障缸!

不拆发动机、不测缸压&#xff0c;只测个电流也能知道哪个缸压缩有问题&#xff1f;没错&#xff01;做个相对压缩测试&#xff0c;测下起动电流就行&#xff0c;简单又实用&#xff01;今天&#xff0c;从原理到方法&#xff0c;几分钟教会你&#xff01; 我们都知道&#xf…...

【玩转全栈】--创建一个自己的vue项目

目录 vue介绍 创建vue项目 vue页面介绍 element-plus组件库 启动项目 vue介绍 Vue.js 是一款轻量级、易于上手的前端 JavaScript 框架&#xff0c;旨在简化用户界面的开发。它采用了响应式数据绑定和组件化的设计理念&#xff0c;使得开发者可以通过声明式的方式轻松管理数据和…...

基于 Spring Cloud + Spring AI + VUE 的知识助理平台介绍以及问题

前言&#xff08;一些废话&#xff09; 在看这篇文章的各位大佬&#xff0c;感谢你们留出几分钟时间&#xff0c;来看这个产品介绍&#xff0c;其实重点说实话&#xff0c;不是这个产品怎么样。而是在最后有一个郁结在心里的几个问题&#xff0c;希望大佬们能给出一些建议。万…...

< 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析

起因 两个 VPM/VPS&#xff0c;安装了 fail2ban 去拦截密码穷举攻击。每天的记录都在增长&#xff0c;以前复制屏幕输出就行&#xff0c;一屏的内容还容易粘贴出来的。昨天已经过 500 条&#xff0c;好奇 fail2ban 是如何存储这些内容的&#xff1f;就发现它在使用 SQLite3 数…...

前端知识速记:重绘和回流

前端知识速记&#xff1a;重绘和回流 一、什么是重绘与回流 1. 重绘&#xff08;Repaint&#xff09; 重绘是指当元素的外观发生变化时&#xff0c;浏览器需要重新绘制这些元素。由于这些操作不会改变元素占据的空间&#xff0c;因此不需要进行回流。常见的重绘操作包括&…...

webrtc peerconnection_client peerconnection_server 连接失败问题解决 win10 win11

0 常见问题 (1) webrtc peerconnection_client 连接 peerconnection_server 无连接列表 &#xff08;2&#xff09;连接导致崩溃debug状态下因为这个断言 RTC_DCHECK_RUN_ON(&capture_checker_); 1 在 peerconnection\client\main.cc 当中 定义类 class CustomSock…...

【C++】STL——list的使用与底层实现

目录 &#x1f495;1.带头双向链表List &#x1f495;2.list用法介绍 &#x1f495;3.list的初始化 &#x1f495;4.size函数与resize函数 &#x1f495;5.empty函数 &#x1f495;6.front函数与back函数 &#x1f495;7.push_front,push_back,pop_front,pop_back函数…...

iOS 音频录制、播放与格式转换

iOS 音频录制、播放与格式转换:基于 AVFoundation 和 FFmpegKit 的实现 在 iOS 开发中,音频处理是一个非常常见的需求,比如录音、播放音频、音频格式转换等。本文将详细解读一段基于 AVFoundation 和 FFmpegKit 的代码,展示如何实现音频录制、播放以及 PCM 和 AAC 格式之间…...

【PyTorch】解决Boolean value of Tensor with more than one value is ambiguous报错

理解并避免 PyTorch 中的 “Boolean value of Tensor with more than one value is ambiguous” 错误 在深度学习和数据科学领域&#xff0c;PyTorch 是一个强大的工具&#xff0c;它允许我们以直观和灵活的方式处理张量&#xff08;Tensor&#xff09;。然而&#xff0c;即使…...

Jsoup库具体怎么用?

Jsoup 是一个非常强大的 Java 库&#xff0c;用于解析和操作 HTML 文档。它提供了丰富的功能&#xff0c;包括发送 HTTP 请求、解析 HTML 内容、提取数据、修改 HTML 元素等。以下将详细介绍 Jsoup 的基本用法和一些高级功能&#xff0c;帮助你更好地使用 Jsoup 进行网络爬虫开…...

python:如何播放 .spx 声音文件

.spx 是 Speex音频编解码器的文件扩展名&#xff0c;它是一种开源的、免费的音频编解码器&#xff0c;主要用于语音压缩和语音通信领域。spx 文件通常用于语音记录、VoIP应用、语音信箱等场景。 .mp3 是一种广泛使用的音频格式&#xff0c;它采用了有损压缩算法&#xff0c;可…...

HTML学习笔记(6)

利用dom操作实现&#xff0c;对一个表格的增删改查 代码如下&#xff1a; todolist.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …...

走向基于大语言模型的新一代推荐系统:综述与展望

HightLight 论文题目&#xff1a;Towards Next-Generation LLM-based Recommender Systems: A Survey and Beyond作者机构&#xff1a;吉林大学、香港理工大学、悉尼科技大学、Meta AI论文地址&#xff1a; https://arxiv.org/abs/2410.1974 基于大语言模型的下一代推荐系统&…...

【DeepSeek-R1 +1.5B】2060显卡ollama本地部署+open-webui界面使用

https://github.com/open-webui/open-webui Deepseek开源R1系列模型&#xff0c;纯RL助力推理能力大跃升&#xff01; 2060显卡下使用deepseek-r1-1.5B deepseek开源小模型需要的显存&#xff08;根据显存来选模型大小&#xff09; &#xff0c;图from: DeepSeek本地部署&…...

《翻转组件库之发布》

背景 继《翻转组件库之打包》_杨晓风-linda的博客-CSDN博客之后&#xff0c;组件库已经可以正常构建&#xff0c;那如何像elementUI等组件库那样&#xff0c;用npm安装&#xff0c;按照既定的用法使用即可呢&#xff1f;本篇便为你揭晓 资料相关 1、npm官方文档&#xff1a;…...

在深度学习中,样本不均衡问题是一个常见的挑战,尤其是在你的老虎机任务中,某些的中奖倍数较高

在深度学习中,样本不均衡问题是一个常见的挑战,尤其是在你的老虎机任务中,某些的中奖倍数较高 在深度学习中,样本不均衡问题是一个常见的挑战,尤其是在你的老虎机任务中,某些的中奖倍数较高而其他的中奖倍数较低。这种不均衡会导致模型偏向于高频样本(低中奖倍数的),…...

语言月赛 202311【基因】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202311] 基因 题目描述 有一个长度为 n n n 的字符串 S S S。其只包含有大写字母。 小 A 将 S S S 进行翻转后&#xff0c;得到另一个字符串 S ′ S S′。两个字符串 S S S 与 S ′ S S′ 对应配对。例如说&#xff0c;对…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...