React native 测试使用react导航和Jest的组件
我正在开发一个React本地应用程序,它也使用Redux,我想用Jest编写测试。我无法模仿react navigation添加的“导航”道具 以下是我的组件: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”导入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();
});