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 • Equip 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?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.