写点什么

Vitest 引入浏览器模式作为 JSDOM 的替代方案

作者:Daniel Curtis

  • 2025-06-07
    北京
  • 本文字数:954 字

    阅读完需:约 3 分钟

大小:459.57K时长:02:36
Vitest引入浏览器模式作为JSDOM的替代方案

Vitest 是现代的原生测试运行器,它引入了 Vitest 浏览器模式,为开发人员提供了一个可替代传统 DOM 模拟库(如 JSDOM)的选择。将浏览器模式添加到 Vitest 中,允许测试在实际的浏览器环境中运行,为使用 React、Vue 或 Svelte 构建的 UI 应用程序提供了更真实、更可靠的测试行为。

 

Vitest 浏览器模式目前是实验性的。

 

引入 Vitest 浏览器模式是为了帮助提高测试的准确性和可靠性,它通过使用 Playwright 或 WebDriverIO 在真实的浏览器环境中运行测试来实现这一点。这种模式允许真实的浏览器渲染和交互。

 

历史上,JSDOM一直是在 Node.js 中运行前端测试的默认模拟环境。它在 Node 中模拟浏览器 DOM,使其成为单元测试的便捷且快速选项。然而,由于 JSDOM 不是一个真正的浏览器,它的实现有时无法满足高级用例,例如布局计算、CSS 行为或 JSDOM 中尚未支持的 API。Vitest 的目标是提供一个简单的迁移路径来取代 JSDOM 环境。

 

React Testing Library是一个用于测试 React 组件的轻量级库,构建在 DOM Testing Library 之上,后者提供了与 DOM 交互的实用程序。长期以来,它一直依赖 JSDOM 来模拟 DOM 交互。随着 Vitest 浏览器模式的引入,有可能从 React Testing Library 上迁移走,因为许多 API 被原生重写了,重写采用了与 React Testing Library 相同的熟悉模式。Kent C. Dodds是 React React Testing Library 的作者,他表示,他从来没有像现在这样高兴地看到人们卸载 React Testing Library,转而支持原生实现。

 

Vitest 还支持其他框架,如VueSvelte。还有一个社区包可用于Lit。它支持多种不同的浏览器环境,这取决于你使用的哪个平台,如果你选择 WebDriverIO,它支持在四种不同的浏览器中进行测试:Firefox、Chrome、Edge 和 Safari。Playwright 支持 Firefox、 Webkit 和 Chromium。

 

正如他们的文档中概述的那样,使用 Vitest 浏览器模式也有一些缺点,例如它处于实验模式,因此仍处于早期开发阶段。与其他测试模式相比,它也可能有更长的初始化时间。

 

Vite是一个开源的、与平台无关的构建工具,以法语“快速”一词命名。它是由 VueJS 的创造者 Evan You 编写的。Vitest 是下一代 Vite 原生框架,它重用 Vite 的配置和插件;它支持 ESM、TypeScript 和 JSX。

 

浏览器模式的完整文档可以在Vitest网站上找到,其中还包括了设置指南和示例。

 

原文链接:

https://www.infoq.com/news/2025/06/vitest-browser-mode-jsdom/

2025-06-07 15:006100

评论

发布
暂无评论

推荐系统的未来发展(三十三)

Databri_AI

价值观 推荐系统

Kats-Facebook最新开源的时序分析工具

好孩子

在线脑图思维导图生成工具

入门小站

工具

ACM金牌选手整理的【LeetCode刷题顺序】

编程熊

Java 面试 算法 面经 笔试

公司内部使用的数仓开发规范

白贺BaiHe

数据仓库 开发规范 数仓规范 7月日更

Javascript 的工作原理:引擎、运行时和调用堆栈概述

devpoint

JavaScript V8 7月日更

你以为的你以为未必是你以为的

Bruce Talk

敏捷 随笔 Agile 引导和教练

🏆【CI/CD技术专题】「Maven插件Docker系列」使用Maven插件构建Docker镜像的方法

码界西柚

Docker maven 7月日更 Plugin

领域驱动设计到底在讲什么?

escray

学习 极客时间 7月日更 如何落地业务建模

暑假期间快手将重点整治平台:短视频平台如何完善内容审核机制

石头IT视角

Linux之find命令的参数详解

入门小站

Linux

PowerShell 正则表达式

耳东@Erdong

PowerShell 7月日更

密码你真的了解吗

卢卡多多

7月日更

模块一作业

Always

架构实战营

Go 学习笔记之 结构体

架构精进之路

Go 语言 7月日更

我为什么要学习业务建模?

escray

学习 极客时间 7月日更 如何落地业务建模

Apache Flink 漫谈系列 —— 概述

云祁

flink 7月日更

网络攻防学习笔记 Day70

穿过生命散发芬芳

网络攻防 7月日更

全面了解Java并发编程基础!超详细!

程序员的时光

Java 并发编程

架构实战营 模块八课后作业

iProcess

架构实战营

【LeetCode】基于时间的键值存储Java题解

Albert

算法 LeetCode 7月日更

实时音视频技术全栈攻略|寻找C站宝藏

liuzhen007

音视频 7月日更

性能测试框架对比初探

FunTester

性能测试 接口测试 测试框架 测试开发

架构训练营模块 1 作业 - 1班助教

听闻

京东智造云:在世界人工智能大会上,听到的工业智能生长的声音

脑极体

【Flutter 专题】90 图解 Dart 单线程实现异步处理之 Future (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

性能框架哪家强—JMeter、K6、locust、FunTester横向对比

FunTester

性能测试 接口测试 测试框架 测试开发

Hadoop 入门教程

若尘

大数据 hadoop

只更新代码,然后发布版本:基于 Serverless Devs 原子化操作阿里云函数计算

Serverless Devs

模块八作业

Presley

网络攻防学习笔记 Day71

穿过生命散发芬芳

网络攻防 7月日更

Vitest引入浏览器模式作为JSDOM的替代方案_软件工程_InfoQ精选文章