2017-09-26 11 views
3

ReactNative 0.42から0.48に更新したアプリがあります。このアップデートでは、テストのためにJestに移行しました(mocha/chai/enzymeから)。現在Jest v21.1.0を使用しています。手動で各テストを実行すると、エラーなしですべてのテストが実行されます。私はちょうどyarn jestを実行すると、私はこのエラーを取得:Jest Error "ReactNative 0.48でプロパティ 'validAttributes'が未定義です"を読み取ることができません。

/scratch/react_native_app/client/node_modules/react-native/Libraries/Renderer/ReactNativeStack-dev.js:2582 
warnForStyleProps$1(nativeProps,viewConfig.validAttributes); 
             ^

TypeError: Cannot read property 'validAttributes' of undefined 
    at setNativePropsStack$1 (/scratch/react_native_app/client/node_modules/react-native/Libraries/Renderer/ReactNativeStack-dev.js:2582:43) 
    at Component.setNativeProps (/scratch/react_native_app/client/node_modules/react-native/Libraries/Renderer/ReactNativeStack-dev.js:2550:1) 
    at AnimatedProps.callback [as _callback] (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:1819:20) 
    at AnimatedProps.update (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:1698:6) 
    at /scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:230:69 
    at Set.forEach (native) 
    at _flush (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:230:16) 
    at AnimatedValue._updateValue (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:939:1) 
    at TimingAnimation.animation.start._this9._animation [as _onUpdate] (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:906:8) 
    at TimingAnimation.onUpdate (/scratch/react_native_app/client/node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js:345:6) 

私は確認することはできませんが、我々は唯一のアニメーションとタイミングを扱う二つの成分を持っています。我々はjest.useFakeTimers();を使用していますjest.runAllTimers();を追加すると、個々のコンポーネントでエラーが発生することがあります。コンポーネントのタイミングの部分は次のようになります。

componentDidMount() { 
     Animated.timing(
     this.state.fadeAnim, { 
      toValue: 1, 
      delay: 2000 
     } 
    ).start(); 
    } 

そして

<Animated.View style={{ opacity: this.state.fadeAnim }}> 
... 
</Animated.View> 
+0

私は同じ問題を抱えていて、さらに困惑しています。個々に(各ファイルごとに)実行すると、テストは成功します。 'npm run jest'を実行すると、このエラーが出ます。 – pietro909

+0

@ pietro909私は実際にちょうどこれを先週末に考え出しました。以下の私の答えを参照してください – DaKaZ

答えて

1

それはかなり時間がかかりましたが、私は最終的に何が起こっていたかを考え出しました。基本的に、私のテストの多くはアニメーションビューをレンダリングしていたと私は考えました。私はもともと部品のための私の特定のテストでjest.useFakeTimers();を含めていたが、その後、私はtest/jest_setup.jsという名前の設定ファイルにあることを移動してから、私のpackage.jsonファイルにこれを追加しました:今私のエラーがなくなっている

"jest": { 
    "setupFiles": [ 
     "./node_modules/react-native/jest/setup.js", 
     "./test/jest_setup.js" 
    ], 
    // rest of jest config 
    } 

+0

解決策は機能しません。 Btw、含まれているjest.useFakeTimers()の違いは何ですか? test/jest_setup.jsにありますか? – Max

関連する問題