我正在尝试模拟一个带有react-native (不是第三方模块) 的模块,例如LayoutAnimation
:
import * as RN from 'react-native'
RN.LayoutAnimation = jest.fn()
但测试失败了:
TypeError: Cannot read property 'decelerationRate' of undefined
at Object.<anonymous> (node_modules/react-native/Libraries/Components/WebView/WebView.ios.js:555:3254)
at Object.get WebView [as WebView] (node_modules/react-native/Libraries/react-native/react-native-implementation.js:73:22)
有没有其他方法可以模拟/存根RN模块,例如LayoutAnimation
或任何其他反应原生(不是第三方)模块?
答案 0 :(得分:7)
尝试简单地执行jest.mock('LayoutAnimation');
答案 1 :(得分:0)
由于/node_modules/react-native/Libraries/Components/WebView/WebView.ios.js中的第213行,您收到此消息
decelerationRate: ScrollView.propTypes.decelerationRate
因为ScrollView被模拟ScrollView.propTypes === undefined
我通过添加:
解决了这个问题import {PropTypes} from 'react';
ScrollView.propTypes = { decelerationRate: PropTypes.number };
设置脚本文件(由package.json的jest部分中的setupTestFrameworkScriptFile属性设置的文件);