Pruebas Unitarias: Cobertura Completa de Métodos HTTP en API
Clase 37 de 38 • Curso de Unit Testing para MEAN con Jasmine
Resumen
¿Cómo se realiza una cobertura completa en las pruebas de métodos HTTP?
Generar una cobertura completa en las pruebas unitarias de métodos HTTP es esencial para asegurar que las llamadas a los servicios se comportan como se espera en diversas situaciones. En este proceso, se requiere verificar no solo las llamadas exitosas sino también aquellos casos que manejan headers específicos, cambios de método y diferentes tipos de requests. Aquí te explicamos cómo hacerlo con un enfoque educativo y práctico, usando Angular como ejemplo.
¿Cómo se implementan los headers en una solicitud HTTP GET?
Al realizar pruebas para el método GET, es fundamental cubrir escenarios donde se emplean headers personalizados. La inclusión de headers es crucial cuando se requiere una autorización extra o para especificar el contenido que se espera recibir del servidor.
import { HttpHeaders } from '@angular/common/http';
// Creación de una nueva variable 'headers'
const headers = new HttpHeaders().set('Platzi-headers', 'christian root');
// Asignación de los headers a nuestra petición GET
httpClient.get('endpoint-url', { headers }).subscribe(response => {
// Aseguramos que nuestro método sea GET
expect(response.method).toBe('GET');
// Validamos que el valor del header corresponda con nuestra configuración
expect(response.headers.get('Platzi-headers')).toBe('christian root');
});
Con esta prueba, se espera no solo que la petición GET se ejecute exitosamente, sino que también se verifiquen los valores de los headers pautados.
¿Cómo se realizan las pruebas para el método POST?
Las pruebas para el método POST son casi análogas a las del método GET, con la diferencia principal en la naturaleza de la operación y la inclusión de un cuerpo en la solicitud. A continuación, se muestra cómo se puede realizar:
// Simulación y prueba del método POST
httpClient.post('endpoint-url', {}, { headers }).subscribe(response => {
// Aseguramos que el método que se ejecuta es POST
expect(response.method).toBe('POST');
});
En este caso, el cuerpo (body
) de la solicitud se transfiere como un objeto vacío. Esta estructura permite verificar que el método POST se ejecuta correctamente, y que la aplicación procesa la solicitud adecuadamente.
¿Qué se debe hacer para lograr una cobertura total del 100%?
El desafío final es la implementación de pruebas para los métodos PUT y DELETE, asegurando que también se cubren escenarios con diferentes configuraciones, tal como se hizo con GET y POST. Aquí te animamos a desarrollar tus propias pruebas, manteniendo en mente la importancia de simular contextos reales donde estos métodos se implementen.
- Prueba del método PUT: Asegúrate de tener un cuerpo en la solicitud y verifica que la actualización de los datos se realice correctamente.
- Prueba del método DELETE: Es esencial verificar que el recurso se elimine adecuadamente, verificando tanto la correcta ejecución del método como la respuesta esperada del backend.
Completar estas pruebas te ayudará a tener un servicio robusto y confiable. Si alguna duda surge en el camino, utiliza los sistemas de discusión para buscar ayuda y compartir conocimientos. ¡Recuerda que la práctica continua es clave para mejorar tus habilidades en pruebas unitarias!