Explorando matchers
Clase 4 de 25 • Curso de Angular: Unit Testing para Servicios
Contenido del curso
Clase 4 de 25 • Curso de Angular: Unit Testing para Servicios
Contenido del curso
Johnny Israel Villacis
Juan Manuel Galindo Casillas
Andrés Quintero Arias
Danny Pacheco
María Mercedes Díaz Montilla
Lista de Matchers de Jasmine 28.1
//Comunes .toBe(); .not.toBe(); .toEqual(); //Veracidad .toBeNull() .toBeUndefined() .toBeDefined() .toBeUndefined() .toBeTruthy() .toBeFalsy() //Numeros .toBeGreaterThan(3); .toBeGreaterThanOrEqual(3.5); .toBeLessThan(5); .toBeLessThanOrEqual(4.5); //Numeros decimales expect(0.3).toBeCloseTo(0.3) //Strings .not.toMatch(/I/); .toMatch(/stop/); //Arrays .toContain('milk'); //Ecepciones myfunction.toThrow(Error);
Esperar si esta definido
expect( name ).toBeDefined(); expect( name2 ).toBeUndefined();
Esperar valores booleanos
expect(1 + 3 === 4).toBeTruthy(); expect(1 + 1 === 3).toBeFalsy();
Esperar mayor o menor
expect(5).toBeLessThan(10); expect(20).toBeGreaterThan(10);
Esperar un match con un regex
expect('123456').toMatch(/123/);
Esperar que lo contenga un array
expect(['apples', 'oranges', 'pears']).toContain('oranges');
Es recomendable solo tener un expect por prueba?
No es necesario tener solamente un expect por prueba unitaria en Jasmine, aunque algunos desarrolladores lo prefieren por razones de legibilidad y mantenibilidad del código.
En general, la recomendación es que cada prueba unitaria se centre en un solo comportamiento o funcionalidad específica de la aplicación o sistema, y que se realicen tantas afirmaciones como sean necesarias para probar ese comportamiento.
Por ejemplo, si estamos probando una función que devuelve el resultado de una operación matemática, podríamos tener múltiples **expect**para comprobar diferentes aspectos del resultado, como el valor, el tipo de datos, la precisión, etc.
describe('calcular', () => { it('debe devolver el resultado de la suma de dos números', () => { const resultado = calcular(2, 3, 'suma'); expect(resultado).toBe(5); expect(typeof resultado).toBe('number'); }); it('debe devolver un error si se intenta dividir por cero', () => { const resultado = calcular(10, 0, 'division'); expect(resultado).toBe('Error: no se puede dividir por cero'); }); });
No hay una regla fija sobre cuántos **expect**deben haber en una prueba unitaria, pero se recomienda tener un enfoque claro y centrarse en probar un comportamiento específico de la aplicación o sistema en cada prueba.
el archivo de Karma.cofif.ts esta visible en todas las versiones de angular?