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

React Native Testing Library/Jest测试报错Cannot read property 'TouchableOpacity'

报错原因

你对react-native-gesture-handler的jest mock配置存在两处问题:

  • mock返回的对象中没有导出业务代码用到的TouchableOpacity组件,导致引入时找不到对应属性
  • 箭头函数直接返回对象未加括号包裹,大括号会被识别为函数体,最终mock返回undefined,这也是触发"Cannot read property 'TouchableOpacity' of undefined"的直接原因
解决方法

修改Card.test.js中的react-native-gesture-handler mock配置,补充导出TouchableOpacity组件,直接模拟为React Native自带的View即可满足测试需求:

jest.mock('react-native-gesture-handler', () => {
  const React = require('react');
  const { View } = require('react-native');
  return {
    TouchableOpacity: (props) => <View {...props} />,
    dropGestureHandler: jest.fn()
  };
});

如果你的项目有多个测试文件都用到了react-native-gesture-handler的组件,可以把这段mock配置放到jest全局setup文件中,避免每个测试文件重复编写。

修改完成后重新运行测试即可正常通过,不需要改动业务代码中的TouchableOpacity逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:36:05