Spec-Zone.ru › Sinon.JS 2

Ложные таймеры

Ложные таймеры — это синхронные реализации 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API