setTimeout不启动该函数

时间:2012-03-22 07:51:46

标签: javascript jquery settimeout

我有一个使用setInterval()方法观察css属性更改的函数(因为在某些浏览器中我们没有事件可以做到这一点),现在我需要为这个函数编写一个单元测试。 / p>

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);
}

然后断言失败了。 我确信手表功能运行良好,它检查css属性每100ms更改一次。只是不要想出一个编写单元测试的好方法..

2 个答案:

答案 0 :(得分:3)

您正在立即呼叫assertEqual并将其返回值传递给setTimeout。您需要将函数传递给setTimeout

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

答案 1 :(得分:1)

你需要做

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

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