Ложные таймеры
Ложные таймеры — это синхронные реализации setTimeout и родственных функций, которые Sinon.JS может переопределить в глобальных функциях, чтобы облегчить тестирование кода с их использованием.
Ложные таймеры предоставляют объект clock, чтобы передавать время, который также может использоваться для управления объектами Date, созданными с помощью new Date(); или Date.now(); (если поддерживается браузером).
Для автономного использования ложных таймеров рекомендуется использовать пакет lolex. Он предоставляет тот же набор функций (Sinon использует его под капотом) и ранее был выделен из Sinon.JS.
{
setUp: function () {
this.clock = sinon.useFakeTimers();
},
tearDown: function () {
this.clock.restore();
},
"test should animate element over 500ms" : function(){
var el = jQuery("<div></div>");
el.appendTo(document.body);
el.animate({ height: "200px", width: "200px" });
this.clock.tick(510);
assertEquals("200px", el.css("height"));
assertEquals("200px", el.css("width"));
}
}
API ложных таймеров
var clock = sinon.useFakeTimers();
Принуждает Sinon заменить глобальные setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate и Date пользовательской реализацией, которая привязана к возвращаемому объекту clock.
Запускает таймер с отметки времени эпохи Unix (0).
var clock = sinon.useFakeTimers(now);
Аналогично вышеописанному, но вместо запуска таймера с отметкой времени 0, он запускается с заданной отметкой времени.
С sinon@2.0.0
Вы также можете передать объект Date, и его getTime() будет использоваться для начальной отметки времени.
var clock = sinon.useFakeTimers([now, ]prop1, prop2, ...);
Устанавливает начальную отметку времени таймера и имена функций для имитации. Если первый аргумент не является числовым, устанавливает таймер на 0 и обрабатывает все аргументы как имена функций для имитации.
Возможные функции: setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate и Date. Любые неперечисленные функции продолжают использовать оригинальную версию функции, включая фактическое время для отметки времени. Это может привести к неожиданным результатам и должно использоваться с осторожностью.
Обратите внимание, что если функции не указаны, по умолчанию заменяются все допустимые функции.
clock.tick(ms);
Передвинуть таймер вперед на ms миллисекунд.
Вызывает все таймеры, запланированные в указанном временном интервале.
clock.restore();
Восстановить имитированные методы.
Вызвать, например, tearDown.
© 2010–2017 Christian Johansen
Licensed under the BSD License.
http://sinonjs.org/releases/v2.4.1/fake-timers