Contenido del curso
Fundamentos de unit testing en Angular
Testing en servicios
Proyecto
Testing en consultas HTTP
Bonus
Próximos pasos
Explorando matchers
Contenido del curso
Explorando matchers
Johnny Israel Villacis
EstudianteJuan Manuel Galindo Casillas
EstudianteAndrés Quintero Arias
EstudianteDanny Pacheco
EstudianteMaría Mercedes Díaz Montilla
EstudianteLista 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?