Tengo pruebas en las que estoy usando la función getByText en react-testing-library . Estoy buscando un elemento en DOM que tenga el valor "10-10-2020 12:00" . Pero después del cambio de horario de verano, todas mis pruebas fallaron porque debido al cambio, el texto de la pantalla cambió a "10-10-2020 13:00" (una hora hacia adelante) y ahora no puedo obtener esos elementos. Tendré que actualizar mis pruebas, pero obviamente fallarán una vez más cuando se cambie la hora en invierno.
Ocurre porque, por ejemplo new Date('2020-01-01T00:00:00.000Z') devuelve 01 01 2020 01:00:00 en lugar de 01 01 2020 00:00:00 debido a las zonas horarias.
¿Hay alguna solución alternativa para que mis pruebas sean resistentes al cambio de horario de verano y las zonas horarias?
Establecer la fecha y la hora codificadas para jest debería ayudar:
jest.useFakeTimers('modern') beforeEach(() => { const hardcodedDate = new Date('2022-03-20T12:00:00Z') jest.setSystemTime(hardcodedDate.getTime()) })Significa que en sus pruebas siempre tendrá la misma hora del sistema, lo que ayudará con el cambio de horario de verano (o cualquier cambio de hora)
UPD: para ver la fecha en las pruebas antes del horario de verano, debe cambiar el día codificado antes de que comience (por ejemplo, en el Reino Unido es el 27 de marzo)