export function useTimer(initValue: number, isProceed: boolean) { const [value, setter] = useState(initValue) useEffect(() => { setter(initValue) const interval = setInterval(() => { if (isProceed && value > 0) setter((c) => c - 1) else if (value < 0) { clearInterval(interval) } }, 1000) return () => { clearInterval(interval) } }, [initValue, value, isProceed]) return { seconds: value > 0 ? `${Math.floor(value / 60)}:${value % 60 < 10 ? '0' : ''}${value % 60}` : '', resetTimer: () => setter(initValue), } } test('InitialCountState < 0', async () => { const { hydrate, result, waitForValueToChange } = renderHook(() => useTimer(InitialCountState, isStartTimer) ) InitialCountState = -1 isStartTimer = true hydrate() await waitForValueToChange(() => result.current.seconds) expect(result.current.seconds).toBe('') })Se agotó el tiempo de espera en waitForValueToChange después de 1000 ms.
No se pudo resolver el resultado de la falla durante la prueba de ganchos. Se dice que falló porque fue por exceso de tiempo, pero no sé cómo solucionarlo. ¿Hay una buena manera?