2017-09-26 101 views
3

我们有一个应用程序,我们最近从ReactNative 0.42更新为0.48。在那次更新中,我们迁移到Jest进行测试(从摩卡/柴/酶)。我们目前正在使用Jest v21.1.0。当我手动运行每个测试时,它们都会毫无错误地通过。当我跑得yarn jest我得到这个错误:Jest Error“Can not read property'validAttributes'of undefined”on ReactNative 0.48

/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

以下查看我的回答该解决方案无效。顺便说一句,包含jest.useFakeTimers()之间的区别是什么?并在测试/ jest_setup.js? – Max

相关问题