Testeo Unitario de Funciones con MOOC en Go
Clase 21 de 30 • Curso de Go Intermedio: Programación Orientada a Objetos y Concurrencia
Contenido del curso
Programación orientada a objetos
- 5

Programación Orientada a Objetos en Go: Análisis y Comparativa
06:51 min - 6

Equivalente de Clases en Go: Uso de Structs y Propiedades
06:41 min - 7

Métodos en Structs: Implementación de Receiver Functions en Go
08:54 min - 8

Implementación de Constructores en Go: Ejemplos y Mejores Prácticas
10:48 min - 9

Herencia y Composición en Programación Orientada a Objetos
14:50 min - 10

Interfaces y Polimorfismo en TypeScript y Go
12:35 min - 11

Patrón Abstract Factory: Interfaces y Polimorfismo en Go
07:37 min - 12

Implementación del Patrón Factory en Go para Notificaciones
10:10 min - 13

Funciones Anónimas en Go: Uso y Consideraciones Prácticas
06:56 min - 14

Funciones Variádicas y Retornos con Nombre en Go
10:51 min
Go Modules
Testing
- 17

Tests unitarios y code coverage en Go
10:47 min - 18

Cobertura de Código y Testing en Go: Mejorando la Calidad del Software
09:56 min - 19

Profiling de Código en Go para Optimización de Rendimiento
08:46 min - 20

Testing Unitario en Go: Uso de Mock Services
11:51 min - 21

Testeo Unitario de Funciones con MOOC en Go
Viendo ahora
Concurrencia
- 22

Canales con y sin buffer en Go: diferencias y uso práctico
06:23 min - 23

Sincronización de Rutinas en Go con Wait Group
07:26 min - 24

"Uso de Canales con Buffer como Semáforos en Go"
09:00 min - 25

Manejo de Canales de Lectura y Escritura en Go
09:34 min - 26

Concurrencia en Go: Creación de Worker Pools y Fibonacci
11:23 min - 27

Multiplexación de Canales en Go con Select y Case
07:13 min
Proyecto: servidor con worker pools
Conclusión
¿Cómo implementar MOOC Functions para pruebas unitarias?
El arte de realizar pruebas unitarias nos permite validar que nuestro código esté funcionando correctamente y de manera eficiente, incluso cuando depende de otras funciones. Implementar MOOC Functions es una técnica poderosa que nos ayuda particularmente en este contexto. Aprenderemos cómo usar esta técnica de manera efectiva.
¿Qué son las MOOC Functions y por qué son útiles?
Las MOOC (Mock) Functions son versiones simuladas de funciones reales que nos permiten probar unidades de código en aislamiento. Al usarlas, podemos:
- Simular comportamientos complejos: Sin necesidad de depender de funciones que podrían ser costosas o difíciles de ejecutar en un entorno de prueba.
- Asegurar que las funciones principales están aisladas: Garantizando que la lógica principal se ejecuta correctamente sin interferencias.
- Facilitar la detección de errores: Permitiendo cambios controlados en las respuestas de las funciones para verificar que se manejen adecuadamente los casos erróneos.
¿Cómo crear y utilizar las MOOC Functions en Go?
Paso 1: Definición de estructuras y valores de prueba
Primero, definimos nuestras estructuras y casos de prueba:
func main() {
expectedEmployee := FullTimeEmployee{
Person: Person{Age: 35, DNI: "1", Name: "Jungleu"},
ID: "1",
Position: "CEO",
}
}
Este bloque define un empleado con parámetros que utilizaremos en nuestras pruebas.
Paso 2: Almacenamiento y sustitución de funciones originales
Para modificar funciones adecuadamente sin perder sus versiones originales, las almacenamos:
originalGetEmployeeByID := getEmployeeByID
originalGetPersonByID := getPersonByID
Luego, reemplazamos las funciones originales con las Mooc Functions.
Paso 3: Uso de rangos y comparación de resultados
Iteramos sobre nuestra tabla de casos de prueba y evaluamos:
for _, test := range tests {
ft, err := getFullTimeEmployeeByID(test.ID, test.DNI)
if err != nil {
log.Println("Error when getting employee:", err)
}
if ft.Person.Age != expectedEmployee.Person.Age {
log.Printf("Expected age %d but got %d", expectedEmployee.Person.Age, ft.Person.Age)
}
}
Es vital comparar propiedad por propiedad, siempre retornando las funciones originales al finalizar.
¿Cómo ejecutar y validar los resultados de las pruebas?
Utilizamos comandos específicos para ejecutar pruebas y verificar resultados. Con go test, podemos comprobar si nuestras pruebas pasan correctamente:
go test
Si unes estos conceptos con un enfoque meticuloso al almacenar y restaurar funciones, tu experiencia probando funciones complejas se enriquecerá notablemente.
Reflexiones finales y mejores prácticas
- Fijar valores originales: Siempre mantén los valores originales de las funciones antes de hacer mocs.
- Prueba cambios específicos: Experimenta cambiando valores de prueba para garantizar que las condiciones bajo prueba se comporten como se espera.
- Frecuencia en las pruebas: Realiza pruebas de forma regular para captar errores de manera temprana y frecuente en el desarrollo.
Este conocimiento no solo te dará confianza en la funcionalidad de tu código, sino que también mejorará tu eficiencia en el desarrollo de software, ¡motivo por el que continúes sumergiéndote en este fascinante mundo de las pruebas unitarias!