本技能面向 Expo React Native 应用,提供一套可重复的 Jest 测试搭建与编写规范。其核心是在仓库根目录维护唯一 Jest 配置,按 unit、android、golden 三个项目组织测试,并配合 jest-expo、React Native Testing Library 14、fast-check 和 Stryker 实现单元测试、组件测试、属性测试与变异测试。
主要能力与规则包括:所有测试文件以 <unit>.test.ts(x) 命名并放在对应源码旁,禁止放入 src/app/ 路由目录;组件与 hook 必须通过 renderWithProviders、renderHookWithProviders 或 renderRouterWithProviders 等辅助函数渲染,路由测试不得直接使用 Expo Router 的 renderRouter;原生 SDK 只能通过根 mocks/<sdk>.ts 模拟,适配器层以上用 fake 实现测试;测试需保持确定性,统一 TZ=UTC、注入 ClockPort、使用 flushMicrotasks 而非 sleep,Android 专属行为写入 .android.test.tsx。
使用方式上,技能提供 check-test-setup.mjs、check-test-code.mjs、check-mutation-report.mjs 三个校验脚本,以及 templates/ 中的配置和测试模板。工作流包括检查并补齐测试配置、接入渲染辅助函数、按测试类型选择参考文档、编写并运行单个测试、执行全量覆盖率检查和变异测试,最终要求三项检查均输出 RESULT: PASS。完成标准包括 npx jest --ci 通过、覆盖率全局达到 90/90/90/85、逻辑模块达到 95/95/95/90、变异分数至少 75% 且无存活变异体。
适用场景为使用 Expo Router 和 React Native 的移动应用项目,尤其是需要统一测试规范、提高测试可靠性、防止测试不运行或误通过、并对核心逻辑进行变异测试的团队。限制方面,该技能依赖特定的 Expo、Jest、RNTL、React 与 Stryker 版本,需要项目已有或同步搭建架构与边界、类型与 lint 规则等相关配置;未使用 Expo 的仓库部分检查不适用。