Vitest 2.0 正式发布:Vue 团队打造的下一代测试框架

来源: OSCHINA
编辑:
2024-07-10 10:18:00

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

展开阅读全文
点击引领话题📣 发布并加入讨论🔥
0 评论
3 收藏
分享
返回顶部
顶部