You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React Native中运行UI测试时Jest与React Navigation报错

React Native Jest UI测试导航模块报错解决方案

根据你提供的配置和报错情况,问题出在仅mock了@react-navigation/native-stack模块,但未提供具体的导航组件实现——Jest默认的空mock会导致createNativeStackNavigator()返回undefined,进而读取Navigator/Screen时抛出错误。

以下是针对性修复步骤:

  • 完善/jest/setup.js的mock逻辑,给导航模块提供完整的mock实现:
// 先mock @react-navigation/native(如果用到NavigationContainer)
jest.mock('@react-navigation/native', () => ({
  NavigationContainer: ({ children }) => children,
  useNavigation: () => ({
    navigate: jest.fn(),
    goBack: jest.fn()
  })
}));

// 再完善native-stack的mock
jest.mock('@react-navigation/native-stack', () => {
  const actual = jest.requireActual('@react-navigation/native-stack');
  return {
    ...actual,
    createNativeStackNavigator: () => ({
      Navigator: 'NativeStackNavigator',
      Screen: 'NativeStackScreen'
    }),
    // 如果用到了createScreenOptions等其他API,也需要按需mock
    createScreenOptions: jest.fn()
  };
});
  • 验证transformIgnorePatterns配置是否正确(你当前的配置没问题,但如果后续有其他未转译的依赖,可补充到括号内):
"transformIgnorePatterns": [
  "node_modules/(?!((jest-)?react-native|react-navigation|@react-navigation/.*|@react-native-community/.*))"
]
  • 清除Jest缓存,避免旧mock残留:
npx jest --clearCache

如果仍有报错,检查测试文件中是否用到了其他未被mock的导航相关API,按需补充mock逻辑即可。

内容的提问来源于stack exchange,提问作者RahulSalvikar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:17:09