Mejores prácticas de pruebas
Un resumen condensado de las 25 mejores prácticas más importantes extraídas de cada página en esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 mejores prácticas más importantes extraídas de cada página en esta sección.
Sigue la pirámide de pruebas: Muchas pruebas unitarias y de componentes rápidas, menos pruebas de integración, E2E mínimo - E2E pertenece solo a rutas críticas.
Usa jest-expo como el preset: Alinea transformaciones y mocks con Expo SDK 57 - la configuración personalizada de Jest de tutoriales web falla en importaciones nativas.
Centraliza la configuración en jest.setup.ts: Matchers, mocks reanimated y stubs NetInfo viven una sola vez - no copiados en cada archivo de prueba.
Arregla transformIgnorePatterns cuando los paquetes fallan: Opt específicos node_modules en transpiración - documenta la lista al agregar dependencias pesadas nativas.
Simula en los límites del servicio: Simula api/client, no cada módulo expo-* - simular en exceso oculta errores de integración.
Evita la confianza falsa de mocks vacíos: jest.mock('expo-camera', () => ({})) permite que las pruebas pasen mientras la producción falla - devuelve formas realistas.
Consulta como lo hacen los usuarios: la prioridad de RNTL es rol, etiqueta, luego texto - testID es una salida de emergencia, no la predeterminada.
Usa userEvent sobre fireEvent: Las secuencias de presión coinciden con la interacción real - fireEvent omite las rutas de accesibilidad y tiempo.
Espera la interfaz asincrónica con findBy o waitFor: Las aserciones inmediatamente después de press fallan en móvil - la red y las animaciones necesitan matchers asincrónicas.
Prueba presentadores sin proveedores cuando sea posible: Los componentes puros con props-en JSX-salida se ejecutan en milisegundos - reserva MSW para pruebas de integración.
Snapshot solo primitivas estables: Botones e insignias, no pantallas completas - el cambio de snapshot entrena a los equipos para hacer clic y aprobar.
Coloca las pruebas al lado de la fuente: Button.test.tsx al lado de Button.tsx - las carpetas distantes __tests__ dejan de actualizarse.
Ejecuta las pruebas en CI en cada PR: npm test -- --ci con cobertura opcional - las pruebas solo locales no escalan más allá de cinco ingenieros.
Separa scripts unitarios y de contrato: test:contract para fixtures Zod - señal rápida sin arrancar la aplicación completa.
Prueba de contrato de respuestas API con Zod: Esquemas compartidos entre cliente y pruebas - los cambios de forma del backend fallan en CI antes de QA.
Agrega Pact cuando múltiples equipos poseen APIs: Los contratos impulsados por el consumidor complementan las pruebas de esquema - usa cuando móvil y backend se lanzan de forma independiente.
Comienza Maestro con tres flujos de humo: Lanzamiento, inicio de sesión y pestaña principal - los flujos YAML son baratos de mantener frente a Detox para muchos equipos.
Fija appId en Maestro al identificador de paquete: Un appId incorrecto lanza silenciosamente el binario incorrecto - coincide con app.config ios.bundleIdentifier / android.package.
Ejecuta Maestro en artefactos de compilación EAS en CI: Flujos contra binarios similares a lanzamiento - Expo Go no es un sustituto de envío a tienda.
Recurre a Detox cuando la sincronización es el error: La sincronización de caja gris ayuda a los flujos con muchos gestos - acepta el costo de configuración nativa.
Usa Storybook para estados visuales, no navegación: Variantes de catálogo carga/error/vacío - Storybook en dispositivo supera las capturas de pantalla de producción.
Cierra Storybook detrás de STORYBOOK_ENABLED: Intercambia entrada solo en dev - los paquetes de producción no deben enviar rutas de historias.
Política de inestabilidad: reparar o poner en cuarentena: E2E en cuarentena debe tener propietario y vencimiento - los bucles de reintentos ocultan errores de producto.
Prueba rutas sin conexión y modo avión: Mocks NetInfo en pruebas unitarias; verificación de dispositivo real antes del lanzamiento - los usuarios móviles pierden señal constantemente.
Lista de verificación previa al envío: Unidad + componente verde, Maestro de humo en dispositivo físico, pruebas de contrato y flujos manuales de pago/permiso una vez por RC.
renderRouter para pruebas de integración en pilas críticas.Versiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 16 jul 2026