Generador de tests unitarios
Genera casos de prueba unitarios para una función, incluyendo casos límite habitualmente olvidados como valores nulos, vacíos o extremos que el camino feliz suele pasar por alto.
Actúa como ingeniero de software especializado en testing y calidad de software. Genera tests unitarios en [FRAMEWORK DE TESTING, ej. Jest, Pytest, JUnit] para la siguiente función. Incluye: casos normales (camino feliz), casos límite (valores vacíos, nulos, cero, negativos, extremos), al menos un caso de error esperado con su excepción correspondiente, y un comentario breve explicando qué valida cada test. Código: [PEGA AQUÍ LA FUNCIÓN]
Caso de uso
Desarrollo de software
La mayoría de desarrolladores escriben tests para el camino feliz y olvidan los casos límite. Pedir explícitamente valores vacíos, nulos y extremos en el propio prompt fuerza al modelo a cubrir justo esos huecos. Revisa siempre los tests generados: a veces asumen un comportamiento que la función no garantiza realmente.
Por qué funciona esta estructura
La técnica aquí es nombrar explícitamente las categorías de casos límite que suelen olvidarse: vacío, nulo, cero, negativo, extremo. Sin esa lista explícita, tanto humanos como modelos de IA tienden a generar solo tests del camino feliz, que son los más fáciles de imaginar pero los que menos protegen contra bugs reales en producción. Pedir también un comentario explicando qué valida cada test hace que la suite de tests sea legible y mantenible después, no solo funcional.
Antes vs. después
Antes: pedir escribe tests para esta función de cálculo de descuento suele devolver 2-3 tests que verifican un descuento normal aplicado correctamente, sin considerar qué pasa con un descuento del 0%, un precio negativo por error de entrada, o un descuento mayor al 100%.
Después: con la estructura del prompt, la suite de tests incluye explícitamente esos casos límite, revelando por ejemplo que la función actual no lanza ningún error cuando el descuento supera el 100%, lo que podría generar un precio final negativo en producción, un bug real que el camino feliz nunca hubiera detectado.
Variaciones útiles
- Para funciones asíncronas o con llamadas a APIs externas: pide explícitamente que incluya mocks o stubs para simular respuestas exitosas y fallidas de la API.
- Para código con alta complejidad ciclomática: pide primero un listado de todas las rutas de código posibles antes de generar los tests, para asegurar cobertura de cada rama condicional.
- Para equipos con estándares de testing propios: pega un test de ejemplo ya existente en el proyecto para que el modelo replique el mismo estilo y convenciones de nomenclatura.
Qué IA usar
ChatGPT con capacidad de ejecución de código tiene la ventaja de poder verificar que los tests generados realmente compilan y pasan antes de entregártelos. Claude es una alternativa excelente por su capacidad de razonamiento sobre casos límite no obvios, especialmente en funciones con lógica de negocio compleja.
Publicidad
Conclusión
Los tests generados por IA son un punto de partida sólido, pero la cobertura de casos de negocio específicos sigue requiriendo criterio del desarrollador que conoce el contexto completo. Ejecuta siempre los tests generados antes de confiar en ellos: un test que compila no es necesariamente un test correcto.
Preguntas frecuentes
Explora más prompts en Programación y código o revisa nuestras guías de prompt engineering.
Prompts relacionados
Revisor de código con buenas prácticas
PremiumPide una revisión de código detallada señalando bugs, riesgos y mejoras de legibilidad. Funciona como un segundo par de ojos disponible en cualquier momento, útil tanto para revisiones rápidas como para preparar código antes de un pull request.
Documentación de función de código
Genera documentación clara (docstring/JSDoc) para una función a partir de su código, incluyendo parámetros, tipo de retorno y un ejemplo de uso listo para copiar.
Explicación de código para principiantes
Explica un fragmento de código línea por línea en lenguaje sencillo, ideal para quien está aprendiendo a programar o necesita entender rápidamente código heredado de otro desarrollador.