10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:005977

评论

发布
暂无评论

Redis 持久化 --RDB

是老郭啊

redis redis持久化 aof rdb

CSS常用样式——绘制各种角度的三角形(1)

程序员学院

CSS css3 CSS小技巧

手把手教程:基于环信4小时开发一个视频会议APP【附源码】

环信

企业表格技术与风险指标补录系统

葡萄城技术团队

SpreadJS

区块链支付系统开发,数字货币支付承兑商APP模式搭建

13530558032

话题讨论 | 你的桌面上会放哪些有趣的小摆件?

InfoQ写作社区官方

工作 话题讨论 办公室

Spring 5 中文解析核心篇-IoC容器之IoC容器和Bean概述

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之ApplicationContext与BeanFactory

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之AOP编程(上)

青年IT男

Spring5 Spring Framework

日防夜防,“隐私窃贼“难防? 手把手教你如何使用OPPO手机管理应用权限

OPPO安全

安全 隐私保护 数据隐私 sdk

为什么企业自主开发软件时,都会使用统一的模块化框架式开发平台?

Philips

敏捷开发 代码优化 框架设计 框架开发 标准框架

Spring 5 中文解析核心篇-IoC容器之BeanDefinition继承与容器拓展点

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之类路径扫描和组件管理

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之基于Java容器配置

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之自定义Bean性质

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之AOP编程(下)

青年IT男

Spring5 Spring Framework

从RainbowBridge看Js与Java交互中的安全漏洞

OPPO安全

安全 安全漏洞

手把手带你写Node.JS版本小游戏

华为云开发者联盟

Java node.js Node 华为云 剪刀石头布

基于环信sdk在uni-app框架中快速开发一款多平台社交Demo

环信

区块链数字货币交易所开发,数字交易平台搭建

13530558032

敏捷转型谁先动:老总,项目经理or团队

华为云开发者联盟

项目管理 敏捷 敏捷开发 团队 华为云

Spring 5 中文解析核心篇-IoC容器之Environment抽象

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之SpEL表达式

青年IT男

Spring5 Spring Framework

你真的懂AQS吗?透彻理解AQS源码分析系列之AQS基础一

InfoQ_d2212957090d

AQS

软件工程开发之道:了解能力和复杂度是前提

华为云开发者联盟

软件工程 开发 项目 代码 复杂度

Spring 5 中文解析核心篇-IoC容器之基于注解的容器配置

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Spring AOP API

青年IT男

Spring5 Spring Framework

车队管理软件

samhuang

Spring 5 中文解析核心篇-IoC容器之依赖关系

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之Bean作用域

青年IT男

Spring5 Spring Framework

Spring 5 中文解析核心篇-IoC容器之JSR330标准注解

青年IT男

Spring5 Spring Framework

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