从 v28 到 v29
正在将 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()
的支持,这意味着像 uuid
和 nanoid
这样的包(在 Jest@28 中无法正常工作)可以在没有额外 polyfill 的情况下工作。
pretty-format
ConvertAnsi
插件已从 pretty-format
包中删除,取而代之的是 jest-serializer-ansi-escapes
.
jest-mock
jest-mock
包中 Mocked*
实用程序类型的导出已更改。MaybeMockedDeep
和 MaybeMocked
现在分别导出为 Mocked
和 MockedShallow
;仅公开 MockedClass
、MockedFunction
和 MockedObject
的深度模拟变体。
TypeScript
本页面的 TypeScript 示例只有在您显式导入 Jest API 时才能按文档工作
import {expect, jest, test} from '@jest/globals';
有关如何使用 TypeScript 设置 Jest 的详细信息,请参阅 入门 指南。
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});