Pruebas Unitarias en Formularios Reactivos con Angular
Clase 28 de 38 • Curso de Unit Testing para MEAN con Jasmine
Resumen
¿Cómo iniciar pruebas unitarias en un formulario reactivo con Angular?
Antes de lanzarnos a las pruebas unitarias, es vital asegurar que tu código está en orden. Hemos configurado los imports necesarios, incluyendo Stub classes y los formularios reactivos. Ahora, el objetivo principal es verificar que la inicialización y estructuración del componente se desarrollen de forma correcta.
¿Qué debe revisarse primero?
Al inicializar el componente, es crucial examinar dos formularios:
- Primer grupo de formularios:
- Tres propiedades (inputs) agrupadas en el formulario.
- Segundo grupo de formularios:
- Dos inputs, un input ordinario y un array que podría tener más elementos.
El objetivo inicial es asegurarse de que toda la declaración de estos formularios sea precisa y que los controles esperados estén correctamente configurados.
// Código de ejemplo para la inicialización de pruebas
describe('cuando el componente es inicializado', () => {
it('debería crear los formularios correctamente', () => {
const keys = Object.keys(component.firstGroup.controls);
expect(keys).toEqual(['title', 'author', 'description']);
});
});
¿Cómo prevenir errores al añadir nuevos controles?
Agregar nuevas pruebas es un buen mecanismo para asegurarse de que cualquier alteración, como añadir o eliminar controles, se detecten de manera oportuna:
- Al crear una nueva función de prueba se espera que esta alerte si se agregan o quitan elementos sin las expectativas debidas.
// Código de ejemplo para agregar pruebas de seguridad
it('debería verificar que los grupos del formulario son creados', () => {
const assetsKeys = Object.keys(component.secondFormGroup.controls);
expect(assetsKeys).toEqual(['firstAsset', 'assets']);
});
¿Cómo probar la funcionalidad de agregar elementos en un array de formularios?
El desafío aquí es evaluar una función llamada addAsset
, diseñada para añadir elementos al array en el segundo formulario:
- Los elementos nuevos deben ser controlados por un índice apropiado, donde el primer elemento tiene la clave
0
y el segundo1
.
// Ejemplo de código para prueba de adición de assets
it('should add new group into the array', () => {
const controlArray = component.secondFormGroup.controls['assets'] as FormArray;
component.addAsset();
component.addAsset();
expect(controlArray.length).toBe(2);
});
¿Cuáles son los errores comunes a evitar al realizar pruebas?
Uno de los errores más comunes es intentar realizar un spec
en bloques incorrectos como describe
, donde el componente y sus instancias aún no se han creado en beforeEach
. De este modo, ten en cuenta:
- Siempre utiliza
beforeEach
para inicializar las instancias y componentes necesarios antes de ejecutar cualquierit
. - Mueve cualquier lógica o pruebas dentro de un bloque
it
para asegurar que se ejecute en el contexto correcto.
Al seguir estas directrices y consejos, no solo desarrollas pruebas unitarias robustas, sino que también garantizas la consistencia y previsibilidad en el ciclo de vida de tus aplicaciones Angular. Con la práctica, te volverás más eficiente al escribir pruebas unitarias, asegurando que tu código se mantenga impecable y libre de bugs. ¡Adelante, sigue aprendiendo y mejorando tus habilidades!