我有一个使用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更改一次。只是不要想出一个编写单元测试的好方法..
答案 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);