setTimeout не запускает функцию - PullRequest
0 голосов
/ 22 марта 2012

У меня есть функция, которая использует метод setInterval() для наблюдения за изменением свойств css (потому что в некоторых браузерах у нас нет событий для этого), теперь мне нужно написать модульный тест для этой функции.

var counter = 0;
function callback() {
    counter++;
}
$('body').append('<div id="testDom" style="color:red"/>');
dom = $('#testDom').get(0);
watcherId = DomWatcher.watch(dom, 'color', $.proxy(callback,this));
function testWatch() {
    $(dom).css('color', 'green');
    setTimeout(assertEqual(counter, 1), 1000);
}

Тогда утверждение не выполнено. Я уверен, что функция watch работает хорошо, она проверяет изменение свойств css каждые 100 мс. Только не придумайте хороший способ написания модульного теста ..

Ответы [ 2 ]

3 голосов
/ 22 марта 2012

Вы немедленно звоните assertEqual и передаете возвращаемое значение setTimeout. Вам нужно передать функцию в setTimeout.

function assert() {
    assertEqual(counter, 1);
}
setTimeout(assert, 1000);
1 голос
/ 22 марта 2012

Вам нужно сделать

setTimeout("assertEqual(counter, 1)", 1000);

или

setTimeout(function(){assertEqual(counter, 1);}, 1000);
...