当前位置: 首页 > 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;对…...

WinUtil:Windows系统优化与软件管理的终极免费解决方案

WinUtil&#xff1a;Windows系统优化与软件管理的终极免费解决方案 【免费下载链接】winutil Chris Titus Techs Windows Utility - Install Programs, Tweaks, Fixes, and Updates 项目地址: https://gitcode.com/GitHub_Trending/wi/winutil 还在为Windows系统优化和软…...

JavaScript逆向工程的架构演进:Jsxer如何重新定义二进制脚本反编译

JavaScript逆向工程的架构演进&#xff1a;Jsxer如何重新定义二进制脚本反编译 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 在Adobe创意生态系统中&#xff0c;ExtendScript脚本的JSXBIN二进制格…...

英雄联盟国服换肤工具R3nzSkin完整使用指南:免费体验所有皮肤

英雄联盟国服换肤工具R3nzSkin完整使用指南&#xff1a;免费体验所有皮肤 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 想要在英雄联盟国服中免费体验…...

Vue3企业级后台管理系统实战:如何用ant-design-vue3-admin高效构建现代化管理平台

Vue3企业级后台管理系统实战&#xff1a;如何用ant-design-vue3-admin高效构建现代化管理平台 【免费下载链接】ant-design-vue3-admin 一个基于 Vite2 Vue3 Typescript tsx Ant Design Vue 的后台管理系统模板&#xff0c;支持响应式布局&#xff0c;在 PC、平板和手机上均…...

使用SEGGER Ozone调试nRF9160 Zephyr多线程应用:从HardFault到线程可视化

1. 项目概述&#xff1a;为什么选择Ozone调试nRF9160 Zephyr应用如果你正在用Nordic的nRF9160开发物联网设备&#xff0c;并且选用了Zephyr RTOS作为软件基础&#xff0c;那么调试环节很可能会成为你项目中的一个“痛点”。nRF9160本身集成了Cortex-M33内核、蜂窝调制解调器和丰…...

i.MX6Q高温满负载压力测试:从散热原理到嵌入式产品可靠性设计

1. 项目概述与测试背景 在嵌入式产品的研发过程中&#xff0c;尤其是在工业控制、车载电子、户外设备等严苛应用场景下&#xff0c;系统的长期稳定性和可靠性是衡量产品成败的关键。其中&#xff0c;处理器作为系统的“大脑”&#xff0c;其在高负载、高温环境下的表现&#xf…...

【从零学Vibe Coding】第二章:大模型到底是怎么工作的(小白版)

第二章&#xff1a;大模型到底是怎么工作的&#xff08;小白版&#xff09; 为什么要了解原理&#xff1f; 很多人一边用 AI 写代码&#xff0c;一边又觉得它像魔法。魔法感越强&#xff0c;失望也越大。 因为一旦它出错&#xff0c;你就不知道问题出在哪&#xff0c;只能骂一…...

开源项目如何从“用爱发电”变成可持续收入?

一、为什么测试领域的开源项目更需要可持续收入&#xff1f;在测试领域&#xff0c;开源工具早已成为基础设施。从UI自动化的Selenium、移动端的Appium&#xff0c;到性能压测的JMeter、新一代端到端框架Playwright&#xff0c;几乎每个测试工程师的日常工作都构建在开源软件之…...

避开这些坑:用Padim+ONNX做工业缺陷检测时,预处理和后处理的那些关键细节

PadimONNX工业缺陷检测实战&#xff1a;预处理与后处理的7个致命陷阱与解决方案 当你在生产线上部署Padim模型时&#xff0c;最危险的往往不是算法本身&#xff0c;而是那些容易被忽略的预处理和后处理细节。一位工程师曾因为0.1%的标准化参数误差导致整个质检系统误判&#xf…...

从stakpak/paks看现代软件包管理:不可变、声明式与分层架构实践

1. 项目概述&#xff1a;从“stakpak/paks”看现代软件包管理的演进最近在折腾一个老项目的依赖管理&#xff0c;又被各种版本冲突和依赖地狱搞得焦头烂额。这让我想起了几年前第一次接触stakpak/paks这个项目时的情景。当时&#xff0c;它更像是一个前沿的探索&#xff0c;试图…...