新闻详情

新闻详情

首页 / 资讯中心 / 详情

Vitest 前端测试实战:从第一个测试到覆盖率接入 CI,只需这 4 步

发布时间:2026/9/10 11:45:38来源:尧图网络
Vitest 前端测试实战:从第一个测试到覆盖率接入 CI,只需这 4 步
Vitest 前端测试实战从第一个测试到覆盖率接入 CI只需这 4 步【免费下载链接】vitestNext generation testing framework powered by Vite.项目地址: https://gitcode.com/GitHub_Trending/vi/vitest改了一行逻辑跑测试终端第一遍初始化就花掉 20 秒结果出来时思路早就断了。CI 里更夸张一次全量测试要等 4 分钟每次合代码都得干等。吃时间的不是测试本身而是测试工具维护了一条和你项目构建分开的转换管道。Vitest 前端测试解决的就是这件事测试不再走第二套构建配置而是直接复用你已经在用的 Vite 转换管道装完就能跑。它到底在做什么测试跑在你的构建同一条管道上把 Vitest 理解成Vite 开发服务器 测试执行器比较好。测试启动时它不会预编译整个项目而是让测试真正 import 到的那些模块走进 Vite 的转换管道按需转换、按需缓存。启动快是因为上次已经转换缓存过的模块直接复用改一个模块只重跑依赖它的测试是因为 Vitest 能从模块图上追出依赖关系——这正是 Vitest 前端测试快在工程上的原因。和 Jest 这类先做整体转换再执行的工具比差别不在谁更聪明而在后者要提前支付一遍完整的转换成本。如果你的项目本来就基于 Vite连vite.config.ts里的 alias、插件都能直接复用不必再养一份测试专用配置。从安装到第一个绿勾装、配、写、跑四步走 ✏️装。一行命令的事npm install -D vitest配。只需在package.json的 scripts 里加一条test: vitest run。配置文件可以先不建默认就会收集所有**/*.{test,spec}.?匹配的文件。写。建一个sum.test.ts内容就这么几行import { expect, test } from vitest test(1 2 3, () { expect(1 2).toBe(3) })跑。npm test之后你大概率会看到RUN v5.0.0 /path/to/project ✓ test/sum.test.ts (1 test) 5ms ✓ 1 2 3 Test Files 1 passed (1) Tests 1 passed (1) Duration 380ms想边改边测直接敲vitest进入 watch 模式文件一变就自动重跑相关测试日常大概率用到的三件事Mock 依赖、接覆盖率、环境隔离 Mock 外部依赖。测试不想真发请求时vi.mock按模块路径整体替换它会被 Vitest 自动提升到文件顶部写在 import 之后也能生效import { vi, expect, test } from vitest import { load } from ./user.js vi.mock(./api.js, () ({ getUser: () Promise.resolve({ id: 1 }) })) test(loads the mocked user, async () { expect(await load()).toEqual({ id: 1 }) }) 默认配置下每个测试开始前会清空 mock 状态多数场景不用手动管理。用法细节看 docs/guide/mocking.md。覆盖率接进 CI。装个 provider跑测试时加个参数npm install -D vitest/coverage-v8 npx vitest run --coverage报告默认落在./coverage/。在 CI 里 Vitest 还会自动输出 job summaryPR 页面直接能看到通过/失败统计和 flaky 测试清单比翻日志快得多配置项参考 docs/guide/coverage.md多环境隔离。默认环境是node个别需要 DOM 的文件在文件头写一行vitest-environment jsdom注释即可单独切换不用动全局配置其余文件继续跑在 node 里。新手最常碰上的两个报错以及怎么修 ⚠️document is not defined。原因一句话默认环境是 nodenode 里没有 DOM。个别文件用上面的文件头注释解决整个项目是前端的直接在配置文件里写死import { defineConfig } from vitest/config export default defineConfig({ test: { environment: jsdom } })记得把jsdom本身装上当依赖。某个第三方 ESM 包报转换或互操作错误。通常是 Node 侧无法直接消费那个纯 ESM 依赖。把它加进deps.optimizer.client.include让 Vite 先打包一层再喂给测试就行完整配置项在 docs/config/index.md 都能查到。前端项目想快速把测试跑起来Vitest 基本是即装即用如果你重度依赖某些 Jest 生态插件动手前先看一遍兼容性。接下来建议翻 docs/config/index.md 过一遍配置项从 Jest 迁过来的话先把 docs/guide/migration.md 读掉。【免费下载链接】vitestNext generation testing framework powered by Vite.项目地址: https://gitcode.com/GitHub_Trending/vi/vitest创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

深入解析 Helm 的 `helm create` 示例图表:以 alpine 测试图表为例 2026/9/10 13:39:56

深入解析 Helm 的 `helm create` 示例图表:以 alpine 测试图表为例

深入解析 Helm 的 helm create 示例图表:以 alpine 测试图表为例 【免费下载链接】helm The Kubernetes Package Manager 项目地址: https://gitcode.com/GitHub_Trending/hel/helm 本篇指南围绕 Helm 仓库 internal/chart/v3/loader/testdata/frobnitz_with…

阅读更多 →
egui 外部事件循环集成实战:用 eframe::create_native 把 egui 应用嵌入你自己的 winit 事件循环 2026/9/10 13:39:56

egui 外部事件循环集成实战:用 eframe::create_native 把 egui 应用嵌入你自己的 winit 事件循环

egui 外部事件循环集成实战:用 eframe::create_native 把 egui 应用嵌入你自己的 winit 事件循环 【免费下载链接】egui egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native 项目地址: https://gitcode.com/GitHub_Trending/eg/e…

阅读更多 →
expo-structured-headers 模块深度解析:Expo 中 RFC 8941 结构化字段(Structured Field Values)的解析实现与版本演进 2026/9/10 13:39:56

expo-structured-headers 模块深度解析:Expo 中 RFC 8941 结构化字段(Structured Field Values)的解析实现与版本演进

expo-structured-headers 模块深度解析:Expo 中 RFC 8941 结构化字段(Structured Field Values)的解析实现与版本演进 【免费下载链接】expo An open-source framework for making universal native apps with React. Expo runs on Android, …

阅读更多 →
Nacos 插件规范全景:扩展点分类、SPI 层次、加载生命周期与统一配置管理实战指南 2026/9/10 13:39:56

Nacos 插件规范全景:扩展点分类、SPI 层次、加载生命周期与统一配置管理实战指南

Nacos 插件规范全景:扩展点分类、SPI 层次、加载生命周期与统一配置管理实战指南 【免费下载链接】nacos an easy-to-use dynamic service discovery, configuration and service management platform for building AI cloud native applications. 项目地址: http…

阅读更多 →
CPython 3.5.5rc1 安全补丁深度解析:sys.path[0] 回归漏洞、PyBytes_DecodeEscape 整数溢出与 libexpat 升级 2026/9/10 13:39:56

CPython 3.5.5rc1 安全补丁深度解析:sys.path[0] 回归漏洞、PyBytes_DecodeEscape 整数溢出与 libexpat 升级

CPython 3.5.5rc1 安全补丁深度解析:sys.path[0] 回归漏洞、PyBytes_DecodeEscape 整数溢出与 libexpat 升级 【免费下载链接】cpython The Python programming language 项目地址: https://gitcode.com/GitHub_Trending/cp/cpython 本文以 Misc/NEWS.d/3.5.…

阅读更多 →
Docker容器数据持久化:核心挑战与三大实现方案 2026/9/10 13:36:55

Docker容器数据持久化:核心挑战与三大实现方案

1. Docker容器数据持久化管理的核心挑战 容器技术的革命性在于其轻量化和瞬时性,但这也带来了数据管理的根本矛盾。当我们在开发环境中运行一个MySQL容器,所有数据默认存储在容器内部的可写层(writable layer)中。这个设计带来的直…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞