7 月 8 日,由 Vue 团队打造的下一代测试框架 Vitest 正式推出 2.0 版本!
Vitest 于 2021 年 12 月推出,至今已经过去了两年多的时间,其发展速度可谓是非常迅速,目前在 npm 下载量已经达到了每周500w,并且还在呈现快速增长的趋势。
Vitest 是一个原生支持 Vite 的测试框架。Vitest 以其快速、简洁的测试解决方案而爆火,只需要很少的配置即可上手。由于 Vitest 和 Vite 使用相同的配置文件,因此将 Vitest 集成到 Vue 应用中很简单。
Vitest 主要功能:
-
与 Vite 通用的配置、转换器、解析器和插件。
-
使用与你的应用程序相同的设置来运行测试!
-
智能文件监听模式,就像是测试的 HMR!
-
支持对 Vue、React、Svelte、Lit 等框架进行组件测试。
-
开箱即用的 TypeScript / JSX 支持
-
ESM 优先,支持模块顶级 await
-
通过 Tinypool 使用 Worker 线程尽可能多地并发运行
-
使用 Tinybench 来支持基准测试
-
套件和测试的过滤、超时、并发配置
-
支持 Workspace
-
Jest 的快照功能
-
内置 Chai 进行断言 + 与 Jest expect 语法兼容的 API
-
内置用于对象模拟(Mock)的 Tinyspy
-
使用 jsdom 或 happy-dom 用于 DOM 模拟
-
通过 v8 或 istanbul 来输出代码测试覆盖率
-
类似于 Rust 语言的源码内联测试
-
通过 expect-type 进行类型测试
Vitest 2.0 更新内容
Vitest 2.0 迁移指南:https://cn.vitest.dev/guide/migration
重要变更
-
简化模拟函数泛型类型并与 Jest 对齐
-
移除 --segfault-retry 选项
-
以栈的形式运行套件钩子
-
默认启用 coverage.ignoreEmptyLines
-
在 JSON 报告中添加正确的位置和快照字段
-
更新依赖 chai 至版本 5
-
移除 watchExclude 选项
-
更改默认池为 'forks'
-
添加 --merge-reports 以支持覆盖率
-
添加基于 Promise 的返回断言,不自动解析返回的 Promise
-
如果全局设置失败,不要退出进程
-
如果配置失败,不要退出进程
-
在 JSON 输出中添加元数据
-
在浏览器配置中将 indexScripts 重命名为 orchestratorScripts
-
添加 "vitest list" API 以打印收集的测试而不运行它们
-
从运行器中移除空套件
-
支持并发套件
新增功能
-
美化差异输出:来自原因的 diff 输出现在更易读
-
改进 IDE 支持:现在允许将导入语句作为 vi.mock 路径
-
移除弃用选项:清理了不再使用的选项
-
添加 blob 报告器:增加了新的报告器选项
-
添加 expect.poll 实用程序:提供了一个工具来手动重试断言
-
添加 browser.ui 选项:允许用户配置浏览器界面的选项
-
在 --output-json 中添加中位数:增强了 JSON 输出功能
-
允许增强 config.test.env:现在可以在配置中增强测试环境变量
-
在浏览器模式中实现模块模拟:浏览器模式现在支持模块模拟
-
允许在配置中配置 expect 选项:可以更灵活地配置期望行为
-
添加打印控制台堆栈跟踪的选项:增加了一个选项来打印控制台的堆栈跟踪
-
向 UI 添加浏览器框架:改进了用户界面,添加了浏览器框架视图
-
图像类型添加 bmp 支持:现在支持 .bmp 图像类型
-
添加从 page.screenshot 返回 base64 的选项:现在可以选择以 base64 格式返回截屏
-
公开来自 Vite 的 parseAst、parseAstAsync:将这些函数公开以供外部使用
-
浏览器模式:
-
为 Vitest 浏览器模式的下一次迭代奠定基础
-
添加服务器和浏览器之间通信的命令
-
在监视模式下不重新加载页面
-
支持更改视口
-
添加浏览器 iframe 鼠标交互
-
支持点击事件
-
将 none 提供程序重命名为 preview 并设为默认值
-
在无头模式下并行运行测试,添加 page.screenshot 方法
-
实现多个 userEvent 方法,添加填充和拖放事件
-
引入 expect.dom 方法,并将 jest-dom 匹配器与 @vitest/browser 打包
-
在浏览器中公开 CDP
-
为浏览器测试添加 "init" 命令
-
添加如果浏览器测试失败则拍摄屏幕截图的选项
-
向交互式 API 添加三击 (tripleClick)
-
Playwright 提供程序不允许调整浏览器视口大小
-
Release Notes:https://github.com/vitest-dev/vitest/releases/tag/v2.0.0
来源:https://mp.weixin.qq.com/s/CFiy_iNnvNbfhoCwoKPUtQ