6.1 jest.config.jsを更新する
transformIgnorePatternsに@amazon-devices/react-native-keplerを含める必要があります。パッケージ4.0.0では、jest/setup.jsファイルでESモジュール構文が使用されています。このパターンがない場合、Jestは「SyntaxError: Cannot use import statement outside a module」というエラーで失敗します。
6.2 jest.setup.jsを作成してTV向けのモックを定義する
RN 0.83では、テスト環境でのモックの動作が変更されています。次の例のように、TVに適したモックを定義するセットアップファイルを作成します。6.3 Jestモックの.defaultのエクスポートを修正する
RN 0.83では、多くの内部モジュールがexport defaultを使用するように変更されています。既存のJestモックが.defaultプロパティのないプレーンなオブジェクトを返している場合、実行時にコンポーネントがundefinedを受け取ることになり、そこで問題が発生します。
症状:複数のテストスイートで「Cannot read properties of undefined (reading 'create')」が発生します。
影響を受けるモジュール
react-native/Libraries/StyleSheet/StyleSheetreact-native/Libraries/StyleSheet/flattenStylereact-native/Libraries/EventEmitter/NativeEventEmitterreact-native/Libraries/Utilities/Platformreact-native/Libraries/Utilities/Dimensionsreact-native/Libraries/Utilities/PixelRatioreact-native/Libraries/Utilities/useWindowDimensionsreact-native/Libraries/BatchedBridge/NativeModules
6.4 テストファイルを更新してact()でラップする
React 19では、次の例に示すように、テスト内の状態更新をact()でラップする必要があります。
@testing-library/react-native
@testing-library/react-nativeを使用する場合ば、テストライブラリによってact()が内部で処理されます。このため、render()をReactTestRenderer.act()でラップしないでください。ラップすると、「Can’t access .root on unmounted test renderer」というエラーが発生します。
6.5 ナビゲーションスタックのタイマーのリークを修正する
react-navigation__stackを使用している場合、そのCard.tsxファイルで使用されるアニメーションのsetTimeoutコールバックが、Jestでテスト環境が破棄された後に呼び出されます。
症状:You are trying to import a file after the Jest environment has been torn down
修正:影響を受けるテストファイルに以下を追加します。
6.6 isolatedModulesの型のエクスポートエラーを修正する
TypeScriptから「TS1205: Re-exporting a type when 'isolatedModules' is enabled requires using 'export type'」というエラーが報告される場合は、次の例のように型のエクスポートを更新します。
6.7 スナップショットを更新する
テストの修正がすべて完了したら、スナップショットを再生成します。- コンポーネントラッパー構造の変更
- 属性の順序の違い
- テキストノードのレンダリングの変更
- 非同期境界の更新
git diffを使用してスナップショットの変更点を確認してください。
