從 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 中無法正常運作,現在可以在沒有額外多重填補的情況下運作。
pretty-format
ConvertAnsi
外掛程式已從 pretty-format
套件中移除,取而代之的是 jest-serializer-ansi-escapes
。
jest-mock
Mocked*
實用程式類型的匯出已從 jest-mock
套件中變更。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});