3

いくつかの統合テストを行うために Jest でアプリケーションをレンダリングしようとすると、次のエラーが発生します。

    TypeError: Cannot read property 'createNode' of undefined

      at AnimatedParam.createNode [as __nativeInitialize] (node_modules/react-native-reanimated/src/core/AnimatedNode.js:126:24)
      at AnimatedParam.__nativeInitialize [as __attach] (node_modules/react-native-reanimated/src/core/AnimatedNode.js:71:10)
      at new __attach (node_modules/react-native-reanimated/src/core/AnimatedParam.js:11:10)
      at createAnimatedParam (node_modules/react-native-reanimated/src/core/AnimatedParam.js:71:10)
      at createAnimatedFunction (node_modules/react-native-reanimated/src/core/AnimatedFunction.js:38:17)
      at Object.<anonymous> (node_modules/react-native-reanimated/src/derived/interpolate.js:17:39)

それが不平を言っているコードはreact-native-reanimated次のようになります。

  __nativeInitialize() {
    if (!this.__initialized) {
      ReanimatedModule.createNode(this.__nodeID, { ...this.__nodeConfig });
      this.__initialized = true;
    }
  }

AndはライブラリからのReanimatedModule型エイリアスです。それ以上に、この問題の解決に役立つ有用な情報は見つかりませんでした。NativeModulereact-native

ここで特に奇妙なのは、私がreact-native-reanimated自分のコード ベースで直接使用していないことです。私が知る限り、それを使用している唯一のライブラリ コンポーネントは、テスト対象のコンポーネントでレンダリングされていません。

この問題を再現するための合理的な方法でコードをスリム化することはできませんでした。問題のコードは企業の著作権によって保護されているため、リポジトリを共有できません。小さな例でエラーを再現しようとし続けますが、誰かがこの問題を経験したことがある場合に備えて、この質問を公開したいと思いました.

4

3 に答える 3

3

私もこれに遭遇しました。

次のようなコードで、蘇生されたモジュール全体をモックアウトする必要がありました。

jest.mock('react-native-reanimated', () => {
  const View = require('react-native').View;

  return {
    Value: jest.fn(),
    event: jest.fn(),
    add: jest.fn(),
    eq: jest.fn(),
    set: jest.fn(),
    cond: jest.fn(),
    interpolate: jest.fn(),
    View: View,
    Extrapolate: { CLAMP: jest.fn() },
    Transition: {
      Together: 'Together',
      Out: 'Out',
      In: 'In',
    },
  };
});

私はこれを/spec_config/jest.jsファイルに入れ、ファイルに次の行を追加して(他のいくつかのグローバルモックとともに)ロードしjest.config.jsます。setupFilesAfterEnv: ['./spec_config/jest.js'],

私にはとても混乱しているように思えますが、それがこの世界のやり方なのだと思います。(この GitHub の問題: https://github.com/software-mansion/react-native-reanimated/issues/205 )

于 2020-04-07T15:50:08.057 に答える