SuperAPI AI 工具集

cometchat-react-native-testing

测试与质量

查看项目

更新于 10-21 20:28

技能介绍

用途

该技能面向已经完成 CometChat React Native 集成、需要为其编写测试的开发者。它明确限定使用场景:仅当开发者主动要求测试时才使用,构建功能本身不应附带测试。技能不会主动为项目添加测试框架、端到端套件或 CI。

主要能力

  • Jest 单元测试与 SDK mock:在模块边界 mock @cometchat/chat-sdk-react-native,避免单元测试发起真实网络请求或依赖真实凭据。示例中 mock 了 init、login、logout 以及 AppSettings。
  • 原生依赖 mock:提示同时 mock 测试路径涉及的原生模块,如 react-native-gesture-handler、react-native-svg、react-native-video、@react-native-async-storage/async-storage,否则会出现不提及 CometChat 的 NativeModule 错误。
  • 关键不变量断言:重点验证初始化在登录之前完成,且登录完成前不渲染任何聊天组件;通过读取源码文件并匹配正则,检查配置中不存在 Auth Key。
  • 接线而非渲染断言:验证 onItemPress 触发导航、onBack 返回、已打开界面可关闭等交互接线,而非断言 UI Kit 内部结构。
  • Detox 端到端测试:用于只能由设备证明的场景,包括输入框在键盘弹出后仍存活、硬件返回键导航、手势响应、release 构建启动。

使用方式

前置条件为 React Native 自带 Jest,需安装渲染器:

npm install --save-dev @testing-library/react-native

在测试中通过 jest.mock 对 SDK 进行模块级 mock,示例代码见技能原文。断言 Auth Key 不存在时,读取 src/config.ts 并检查是否匹配 authKey\s*:\s*["'][A-Za-z0-9]{20,}。Detox 用于上述设备级场景。CI 方面,带 mock 的 Jest 可在任意环境运行,Detox 需要模拟器,两者均无法验证通话或推送。

适用场景

  • 为聊天界面编写测试
  • 在 Jest 中 mock CometChat
  • 为聊天功能添加 Detox 覆盖

限制与注意事项

  • 不要断言 UI Kit 内部实现(气泡标记、类名、子元素顺序),这些会随小版本变化而破坏测试。
  • 不要在测试中使用真实凭据,避免网络波动与密钥泄露。
  • 通话与推送需要真实硬件、真实权限和第二台设备,应记录为人工设备检查,不能声称模拟器运行已覆盖。
  • 不要添加未被要求的测试。
  • 验证标准:测试在无网络访问下通过;测试树中无真实凭据;npm run verify:fences:rn-v5 通过。

配套技能

cometchat-react-native-core 涵盖安装、provider 链、init→login→render,本技能假定已掌握,不再重复。