跳至主要内容
版本:29.7

从 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() 的支持,这意味着像 uuidnanoid 这样的包(在 Jest@28 中无法正常工作)可以在没有额外 polyfill 的情况下工作。

pretty-format

ConvertAnsi 插件已从 pretty-format 包中删除,取而代之的是 jest-serializer-ansi-escapes.

jest-mock

jest-mock 包中 Mocked* 实用程序类型的导出已更改。MaybeMockedDeepMaybeMocked 现在分别导出为 MockedMockedShallow;仅公开 MockedClassMockedFunctionMockedObject 的深度模拟变体。

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});