Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 测试使用react导航和Jest的组件_React Native_Mocking_Jestjs_React Navigation - Fatal编程技术网

React native 测试使用react导航和Jest的组件

React native 测试使用react导航和Jest的组件,react-native,mocking,jestjs,react-navigation,React Native,Mocking,Jestjs,React Navigation,我正在开发一个React本地应用程序,它也使用Redux,我想用Jest编写测试。我无法模仿react navigation添加的“导航”道具 以下是我的组件: 从“React”导入React; 从'react redux'导入{connect}; 从“道具类型”导入道具类型; 从“react native”导入{Text,View}; 常量加载=(道具)=>{ if(props.rehydrated==真){ const{navigate}=props.navigation; 导航(“主”);

我正在开发一个React本地应用程序,它也使用Redux,我想用Jest编写测试。我无法模仿react navigation添加的“导航”道具

以下是我的组件:

从“React”导入React;
从'react redux'导入{connect};
从“道具类型”导入道具类型;
从“react native”导入{Text,View};
常量加载=(道具)=>{
if(props.rehydrated==真){
const{navigate}=props.navigation;
导航(“主”);
}
返回(
加载。。。
);
};
正在加载.propTypes={
再水化:需要PropTypes.bool,
导航:PropTypes.shape({
导航:需要PropTypes.func.isRequired,
}).要求,
};
常量mapStateToProps=状态=>({
再水化的,再水化的,
});
导出默认连接(MapStateTops)(加载);
加载组件作为屏幕添加到抽屉显示器

下面是测试:

从“React”导入React;
从“反应测试渲染器”导入渲染器;
从“redux模拟存储”导入模拟存储;
从“../”导入加载;
描述('加载屏幕',()=>{
它('如果未重新水化,则应显示加载文本',()=>{
常量存储=模拟存储({
再水化:假,
导航:{navigate:jest.fn()},
});
expect(renderer.create()).toMatchSnapshot();
});
});
运行测试时,出现以下错误:

警告:失败的道具类型:道具“导航”在“加载”中标记为必需,但其值为“未定义”。
正在加载(由连接创建(加载))
连接中(加载)

有没有关于如何模拟导航属性的想法?

尝试通过道具直接传递
导航

it('如果未重新水化,则应显示加载文本',()=>{
常量存储=模拟存储({
再水化:假,
});
const-navigation={navigate:jest.fn()};
expect(renderer.create()).toMatchSnapshot();
});