Quería simular las funciones de tiempo de espera globalmente, así que agregué una llamada a jest.useFakeTimers en un bloque beforeAll . Cuando ejecuté mis pruebas, jest.advanceTimersByTime no ejecutó el código programado. Usé espías para confirmar que efectivamente se estaba llamando al simulacro. Sin embargo, me di cuenta de que si movía la llamada jest.advanceTimersByTime a la función de prueba, o a un bloque beforeEach , funcionaba.
Aquí hay un ejemplo simple que reproduce el problema.
describe('test', () => { beforeEach(() => { // Only beforeEach block works, NOT beforeAll jest.useFakeTimers(); }) it('setTimeout calls callback', () => { const callback = jest.fn(); setTimeout(() => { callback() }, 3000); expect(callback).not.toHaveBeenCalled(); jest.advanceTimersByTime(3000); expect(callback).toHaveBeenCalledTimes(1); }) })No vi nada en los documentos que explique esto. Estoy usando Jest 26.6.2.