跳至主内容
版本:30.0

从 v28 升级到 v29

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

正在将 Jest 从 v28 升级到 v29?本指南将帮助您重构配置和测试。

信息

完整变更列表请参阅更新日志

备注

需要从更早版本升级?可在此处查看v27 到 v28 的升级指南

兼容性

支持的 Node 版本为 14.15、16.10、18.0 及以上。

快照格式

正如在Jest 28 博客文章中预告的,Jest 29 已将默认快照格式改为 {escapeString: false, printBasicPrototype: false}

如需保留旧行为,可将 snapshotFormat 属性设置为:

+ snapshotFormat: {
+ escapeString: true,
+ printBasicPrototype: true
+ }

JSDOM 升级

jest-environment-jsdom 已将 jsdom 从 v19 升级到 v20。

信息

若使用 jest-environment-jsdom,最低 TypeScript 版本要求为 4.5

值得注意的是,jsdom@20 支持了 crypto.getRandomValues(),这意味着在 Jest@28 中无法正常工作的 uuidnanoid 等包现在无需额外 polyfill 即可运行。

pretty-format

pretty-format 包中的 ConvertAnsi 插件已被移除,改用 jest-serializer-ansi-escapes

jest-mock

jest-mock 包中的 Mocked* 工具类型导出方式已变更:MaybeMockedDeepMaybeMocked 现在分别导出为 MockedMockedShallow;仅保留 MockedClassMockedFunctionMockedObject 的深度模拟变体。

TypeScript

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

信息

本页中的 TypeScript 示例仅在显式导入 Jest API 的情况下才能按文档所述正常工作:

import {expect, jest, test} from '@jest/globals';

有关如何设置 Jest 与 TypeScript 配合使用的详细信息,请查阅入门指南

jest.mocked()

jest.mocked() 辅助方法现在默认会深度封装传入对象的成员类型。若您曾将 true 作为第二个参数传入,请移除该参数以避免类型错误:

- const mockedObject = jest.mocked(someObject, true);
+ const mockedObject = jest.mocked(someObject);

如需保留旧的浅层模拟行为,请将 {shallow: true} 作为第二个参数传入:

- const mockedObject = jest.mocked(someObject);
+ const mockedObject = jest.mocked(someObject, {shallow: true});