Tengo un componente de cuenta regresiva básico basado en reaccionar y quiero escribir una prueba de unidad adecuada para verificar los cambios de número. hasta ahora probé de dos maneras diferentes, (la primera, es para decir en broma que voy a esperar aquí para que no se preocupen por el tiempo. y la segunda, es para burlarse de los cambios de hora). pero ninguno de ellos no tuvo éxito.
Primer enfoque:
describe('Test CountdownTimer component', () => { jest.setTimeout(60000); test('Shoud show current time 1 second later', async done => { const { getByText } = render(<CountdownTimer initialTime={10000} />); await act(async () => { await new Promise((r) => setTimeout(r, 1000)); }) expect(getByText('00:09')).toBeTruthy(); }); });También cansado:
describe('Test CountdownTimer component', () => { jest.setTimeout(60000); test('Shoud show current time 1 second later', async done => { const { getByText } = render(<CountdownTimer initialTime={10000} />); await new Promise((r) => setTimeout(r, 1000)); expect(getByText('00:09')).toBeTruthy(); }); });Segundo enfoque:
describe('Test CountdownTimer component', () => { beforeEach(() => { jest.useFakeTimers(); }) test('Shoud show current time 1 second later', async done => { const { getByText } = render(<CountdownTimer initialTime={10000} />); act(() => { jest.advanceTimersByTime(1000); }); expect(getByText('00:09')).toBeTruthy(); }); }); // error: thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."Es interesante que no haya ningún tutorial completo o documentación bien detallada sobre las pruebas relacionadas con el tiempo en Jest. 🤔