Cuando trabajamos con NestJS es muy habitual ver servicios que inyectan ConfigService directamente. Esto funciona pero complica las pruebas unitarias y acopla el código a detalles de configuración, lo que genera fricción a la hora de mockear dependencias.
En lugar de dejar que cada servicio consulte ConfigService, podemos mover esa responsabilidad al módulo. La idea es inyectar valores primitivos ya listos para usar, por ejemplo una fecha minima que el servicio de creación de contactos recibe como parámetro en su constructor.
Con este enfoque el servicio queda más puro y no sabe de donde vino el valor. En los tests basta instanciar new CreateContactService con una fecha concreta para comprobar el comportamiento sin necesidad de mockear ConfigService ni configurar contenedores complejos.
En el módulo se usa un provider que actúa como fábrica: lee la configuración y crea la instancia del servicio pasando la fecha convertida a Date. Esto centraliza la configuración en el módulo y evita que la lógica de negocio dependa directamente de detalles de infraestructura o servicios externos.
Por que es mejor Clases más puras que solo reciben dependencias, pruebas más simples al evitar mocks pesados, configuración centralizada en el módulo y mayor alineación con los principios SOLID y en particular con el principio de inversión de dependencias.
Beneficios prácticos: menos fricción en pruebas unitarias, mayor reutilización y mantenibilidad del código, y una base más limpia para integrar capacidades avanzadas como inteligencia artificial y agentes IA sin acoplar la lógica a la infraestructura.
En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida. Ofrecemos servicios de inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, integración de agentes IA y soluciones con power bi para visualización y analítica. Aplicamos buenas prácticas de arquitectura como la inyección de valores primitivos para mejorar la calidad del código y acelerar el desarrollo de proyectos a medida.
Si necesitas ayuda para aplicar este patrón en un proyecto NestJS o para diseñar soluciones que combinen inteligencia artificial, ciberseguridad y cloud, en Q2BSTUDIO podemos acompañarte desde la consultoria hasta el desarrollo e implementación.
Conclusión Cambiar la perspectiva y dejar que el módulo resuelva configuraciones e inyecte valores listos simplifica las pruebas, hace las clases más puras y mejora la arquitectura general. Y tu ya aplicas este patrón en tus proyectos NestJS