Pruebas Unitarias con Mocks en GitHub Actions
Clase 9 de 30 • Curso de Ciberseguridad para Desarrollo Web
Resumen
¿Cómo trabajar con GitHub Actions para la validación de código?
El avance del desarrollo de software exige no solo escribir código eficiente, sino también automatizar tareas que puedan optimizar el flujo de trabajo. GitHub Actions es una herramienta poderosa que permite configurar flujos automáticos, como la validación de código. En este contexto, te guiaré en el proceso de realizar un commit, observar su comportamiento en GitHub y solucionar posibles errores.
¿Cómo hacer un commit efectivo?
- Preparar los cambios: Antes de realizar un commit, asegúrate de haber revisado y guardado todos los cambios en tu código.
- Añadir cambios: Utiliza el comando
git add .
para agregar todos los cambios realizados en los archivos del repositorio. - Nombrar el commit descriptivamente: Un buen nombre de commit facilita la lectura y revisión del historial. Por ejemplo:
git commit -m "Add GitHub Actions Config"
. - Hacer un push de los cambios: Finalmente, envía los cambios al repositorio remoto utilizando
git push
.
¿Qué hacer si las acciones fallan?
Al integrar GitHub Actions, es común encontrar errores en los workflows ejecutados. Supón que ves un mensaje de error como "Unable to Resolve Action". Aquí te doy algunos pasos para solucionarlo:
- Revisa el mensaje de error: Lee atentamente el mensaje proporcionado por GitHub. En este caso, puede ser un error de sintaxis.
- Verifica el archivo YAML: Corrige elementos como versiones incorrectas. Por ejemplo, cambiar de
Checkout @4
aCheckout v4
. - Sube los cambios y verifica: Una vez corregidos, realiza un nuevo push. GitHub volverá a ejecutar las acciones donde podrás verificar la solución del problema.
¿Cómo se configuran las pruebas unitarias con mocks en Go?
Una parte esencial en cualquier desarrollo es asegurar que nuestro código funcione como se espera. Para ello, las pruebas unitarias son fundamentales. A continuación, te explicaré cómo preparar una prueba unitaria usando mocks.
¿Cómo iniciar una prueba unitaria?
- Crear una nueva prueba: Abre el archivo de pruebas correspondiente, como
main_test.go
, y crea un nuevo método de prueba. - Setear el entorno: Inicializa los valores que necesitará tu método, como contexto, repositorios, webhooks, y cuerpos de mensajes. Asegúrate de preparar un objeto Dummy y convertirlo en JSON cuando sea necesario.
- Gestiona el tiempo: Genera el
created time
usandotime.Now()
para simular el momento exacto de creación.
¿Cómo usar mocks correctamente?
- Inicializar el objeto mock: Usa la librería mock para crear un objeto que simule el comportamiento de las dependencias externas.
- Especificar llamadas esperadas: Define la llamada al método que se va a testear, como
Insert
. Asegúrate de definir qué argumentos va a recibir y cuál es el comportamiento esperado. - Realizar la llamada y verificar: Llama al método que deseas probar y utiliza
assert
para verificar que no haya errores y que las expectativas del mock se cumplan.
Ejemplo de código de prueba en Go
func TestInsert(t *testing.T) {
c := new(YourTestingFramework)
webhook := &models.Webhook{
Repository: models.Repository{FullName: "example/repo"},
HeadCommit: models.HeadCommit{
ID: "commit123",
Message: "This is a commit",
Author: models.Author{
Username: "user1",
Email: "user1@example.com",
},
},
}
body, err := json.Marshal(webhook)
assert.NoError(t, err)
createdTime := time.Now()
mockRepo := new(YourMockRepo)
mockRepo.On("Insert", mock.Anything, mock.Anything).Return(nil)
err = InsertGitHubWebhook(context.Background(), mockRepo, webhook, body, createdTime)
assert.NoError(t, err)
mockRepo.AssertExpectations(t)
}
Este fragmento es solo un ejemplo, asegúrate de adaptarlo a tus necesidades particulares.
¿Cómo asegurar que GitHub Actions corra las pruebas unitarias?
Finalmente, para integrarse exitosamente con GitHub Actions y que ejecute tus pruebas en cada commit:
- Sube los cambios de tus pruebas: Realiza un commit con tus tests y haz un push a tu repositorio.
- Verifica la ejecución: En la interfaz de GitHub, monitoriza el estado de tus pruebas. Un punto amarillo indica que se están ejecutando y un check verde que finalizaron con éxito.
- Revisa los detalles del log: Abre las acciones para ver exactamente qué pruebas fueron ejecutadas y su resultado.
Con el uso adecuado de GitHub Actions y las pruebas unitarias automatizadas, no solo mejoraremos la calidad del código sino que también optimizaremos nuestro proceso de desarrollo al identificar rápidamente posibles errores o cuellos de botella en el flujo de trabajo. ¡Sigue avanti en tu proceso de aprendizaje!