Tengo este método que devuelve Boolean. Funciona como debería pero en las pruebas unitarias falla. El método se ve así:
const isRushHour = (date: string): boolean => { let isRushHour: boolean = false; let isFriday: boolean = new Date(date).getDay() === 5; let selectedTime: string = new Date(date).toLocaleTimeString( navigator.language, { hour: "2-digit", minute: "2-digit", } ); let isRushHourRange: boolean = selectedTime >= "15:00" && selectedTime <= "19:00" ; if (isFriday && isRushHourRange) { isRushHour = true; } return isRushHour; };Básicamente verifica si la fecha es viernes y si está entre el rango de tiempo. Sin embargo, todo está bien cuando se verifica con la consola f.ex;
console.log(isRushHour("2022-01-07T19:00"))¡Esto devolverá verdadero y debería ser así!
Pero en broma probé con .toBe(true) , .toBeTruthy() , and to toEqual(true)
expect(calculator.isRushHour("2022-01-07T19:00")).toBe(true);Exactamente la misma cadena.
Pero la prueba falla con el mensaje:
expect(received).toBe(expected) // Object.is equality Expected: true Received: falseEsto solucionó el problema:
beforeEach(() => { jest.spyOn(window.navigator, "language", "get"); });