Вступить в клуб →
сложнаяjavascriptТестирование: Jest, Supertest, моки и тестовая база

Фейковые часы для тестирования таймеров

Напишите createFakeClock(start), где start — начальное время в миллисекундах (по умолчанию 0). Верните объект:

  • now() — текущее фейковое время;
  • setTimeout(fn, ms) — планирует вызов fn через ms от текущего времени, возвращает id;
  • clearTimeout(id) — отменяет таймер;
  • advance(ms) — сдвигает время на ms и вызывает все таймеры, чей срок наступил, в порядке срока, а при равном сроке — в порядке создания. Во время вызова fn метод now() возвращает срок этого таймера. Таймеры, созданные внутри fn, тоже срабатывают в этом advance, если их срок укладывается. Отрицательный ms — Error.

заготовка решения

function createFakeClock(start = 0) {
  // ваш код
  return undefined;
}

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела