Andrés Quintero Arias
Es recomendable solo tener un expect por prueba?
Danny Pacheco
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');
Andrés Quintero Arias
Es recomendable solo tener un expect por prueba?
Danny Pacheco
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.