Módulo 4: Descubriendo Dobles de Prueba (Mocks y Stubs)

Aprende a usar Dobles de Prueba (stubs, mocks, fakes y spies) para aislar y acelerar pruebas unitarias en PHP con PHPUnit, evitando fallos y efectos.

8 sept 2025 • 4 min de lectura • Equipo Q2BSTUDIO

Inteligencia-Artificial-

Bienvenido al módulo que transformará la forma en que escribes pruebas unitarias. Hasta ahora hemos probado clases bastante independientes, pero en el mundo real las clases colaboran entre sí. Un servicio como UserService puede necesitar un EmailClient para enviar correos o un Logger para registrar actividad. ¿Cómo validar la lógica de UserService sin enviar un correo real ni escribir en un log cada vez que corre la prueba? La respuesta está en los Dobles de Prueba, clave para aislar y controlar el entorno de test.

Qué son los Dobles de Prueba

Un Doble de Prueba es cualquier objeto que simula a otro con fines de testing, igual que un doble de acción en el cine. Sustituimos las dependencias de la unidad bajo prueba para conseguir tres beneficios principales: 1 Aislamiento total de la unidad, haciendo que el test falle solo por errores propios y no de sus dependencias. 2 Control del entorno, forzando comportamientos específicos como un fallo de base de datos para cubrir todas las rutas del código. 3 Velocidad, reemplazando componentes lentos como llamadas de red por dobles en memoria que aceleran las suites de pruebas de forma drástica.

Con PHPUnit trabajarás sobre todo con Stubs y Mocks.

Stubs control de estado

Un Stub devuelve respuestas prefabricadas ante llamadas concretas. Su objetivo es suministrar a la unidad bajo prueba los datos necesarios para que siga su flujo con normalidad. Cuándo usar un Stub cuando necesitas simular el estado o la salida de una dependencia.

Ejemplo práctico Imagina una clase WelcomeGenerator que depende de un Translator para obtener el saludo correcto. En el test creas un Stub del contrato Translator y lo configuras para que su método getGreeting devuelva la cadena Hello. Luego inyectas ese Stub en WelcomeGenerator y verificas que el método greet concatena correctamente el saludo con el nombre, por ejemplo Hello, John. El test no depende de una implementación real de Translator y se mantiene estable y rápido.

Mocks verificación de interacciones

Un Mock añade una capacidad crucial además de devolver valores, permite verificar que se invocaron métodos concretos de la dependencia. Se usa para comprobar la interacción entre objetos. Cuándo usar un Mock cuando necesitas confirmar que tu clase llama a sus dependencias de la forma esperada.

Ejemplo práctico Supón una clase UserRegistrar que guarda un usuario y debe notificar al Logger. En el test creas un Mock de Logger y defines la expectativa de que el método log se invoque exactamente una vez con un mensaje determinado. Ejecutas register y, si log no se llama, se llama de más o con argumentos distintos, la prueba falla automáticamente. En PHPUnit verás constructos típicos como expects once para el número de llamadas, method para el método observado y with para validar argumentos.

Diferencias clave entre Stubs y Mocks

Propósito principal Stub proporciona respuestas prefabricadas y te ayuda a controlar el estado. Mock verifica interacciones y comportamiento. Enfoque del test Stub centra la prueba en el estado final de la unidad bajo prueba. Mock centra la prueba en la comunicación entre la unidad y su dependencia. Verificación Con Stub las aserciones suelen dirigirse al resultado de la unidad bajo prueba. Con Mock las expectativas forman parte de la aserción, por ejemplo que un método se invoque una vez con ciertos parámetros. Analogía Un Stub actúa como intérprete con guion fijo. Un Mock es como un intérprete supervisado por un director que evalúa si ejecutó las acciones correctas.

Otros dobles útiles Fakes y Spies

Fakes Implementaciones funcionales pero simplificadas frente a producción. Ejemplo una base de datos en memoria que reemplaza conexiones reales a MySQL o PostgreSQL para tests más rápidos y deterministas. Spies Dobles que registran lo ocurrido durante la ejecución y permiten aserciones posteriores sobre cómo fueron usados. En PHPUnit puedes obtener comportamientos de tipo Spy configurando Mocks con expectativas flexibles o inspeccionando invocaciones luego.

Siguientes pasos

Dominar Stubs y Mocks te acerca a pruebas verdaderamente unitarias, predecibles y veloces. A continuación podrás integrar cobertura de código, pipelines de CI CD y buenas prácticas para que tu suite sea un activo estratégico del proyecto. En Q2BSTUDIO impulsamos calidad desde el diseño con desarrollo de aplicaciones a medida y software a medida, automatización de pruebas y pipelines de entrega continua, combinando inteligencia artificial para generar datos sintéticos, detección de flujos frágiles y priorización de pruebas con agentes IA. Si quieres llevar esta visión a tus productos, descubre nuestro enfoque de desarrollo de aplicaciones a medida y cómo aplicamos inteligencia artificial en los ciclos de vida de software.

Sobre Q2BSTUDIO

Somos una empresa de desarrollo de software que crea soluciones robustas y escalables con foco en calidad, seguridad y rendimiento. Nuestro portafolio incluye software a medida, ia para empresas y agentes IA, ciberseguridad con prácticas de pentesting y hardening, servicios cloud aws y azure, servicios inteligencia de negocio con power bi y analítica avanzada, además de automatización de procesos y observabilidad. Diseñamos pruebas unitarias, de integración y end to end alineadas con tu arquitectura para que cada entrega en producción sea segura, repetible y predecible.

Palabras clave relacionadas que abordamos en nuestros proyectos aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.