Как проверить время, указанное пользователем в setTimeout

Прямо сейчас у меня есть плагин jQuery, который добавляет некоторые дополнительные настройки (вокруг того, как обрабатывать возвращаемые данные в определенных контекстах) и опрашивает сервер на предмет информации и изменений. Одна из обязательных функций - позволить пользователю установить интервал опроса. setTimeout (в паре с рекурсией) - это функция, используемая для создания постоянного опроса; это тоже требование.

Вот где я озадачен: наряду с необходимой функциональностью, отмеченной выше, я также должен проверить, действительно ли указанное пользователем значение использовалось в setTimeout. Как бы я поступил так с точки зрения QUnit?

Я уже обдумывал прямую синхронизацию функции с Date.getTime(), но то, как все настроено в данный момент, это не вариант.

1 ответ

Решение

Рассмотрите возможность рефакторинга кода таким образом, чтобы позволить вам переопределить метод, запускающий тайм-аут в вашем тесте, что позволит вам проверить, что передано правильное значение, без фактического запуска тайм-аута.

Если вам действительно нужно вызвать setTimeout, рассмотрите возможность использования sinon.js для макетирования самого setTimeout и управления тем, что он делает вместо этого.

Другие вопросы по тегам