@lexstile

Какие тесты следует провести для хука useDebounce?

Есть хук:
export const useDebounce = (value: any, delay: number) => {
  const [debouncedValue, setDebouncedValue] = useState(value);

  useEffect(() => {
    const handler = setTimeout(() => {
      setDebouncedValue(value);
    }, delay);

    return () => {
      clearTimeout(handler);
    };
  }, [value, delay]);

  return debouncedValue;
};

Какие обязательные тесты для него нужно написать?
Возможно, есть примеры на jest? (был бы очень признателен)
  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
Навскидку - проверить 4 поинта:
1) Стартовое значение доступно сразу
2) Переустановка значения по таймеру (то есть на моменте delay-epsilon оно старое, а на delay+epsilon уже новое)
3) Проверить, что если до окончания таймаута для значения v2 пришло ещё новое значение v3, таймер перезапускается, значение остается v1, по таймеру будет v3. В общем, что это debounce.
4) Сброс таймера при размонтировании компонента.

в дополнение к jest используй renderHook из @testing-library/react-hooks

и типизацию сделай по-человечески, с помощью генерика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы