我正在处理我的项目的打字稿,我使用QUint和sinonjs进行单元测试。我的一个函数动态呈现UI。我需要获取这个动态渲染元素的宽度,并将其用于其他一些计算。为了确保正确计算宽度,我使用setTimeout。代码如下所示:
public function1(): void {
this._createShowMoreUI();
setTimeout(delegate(this, this.function2), 0);
}
private function2(): void {
// use this._element.width();
}
一般情况下一切正常。但是当从单元测试函数2调用function1时,永远不会调用它。谷歌搜索只是指出了如何模拟setTimeout或者错误地使用setTimeout的情况(如在setTimeout(function2(),0)中),这些都没有任何帮助。
答案 0 :(得分:0)
setTimeout
可能正常工作,您需要做的是为测试启用async
。对于Qunit,您需要致电assert.async();
答案 1 :(得分:0)
sinonjs提供'伪造时间' api为此,尝试类似下面的事情:
clock = sinon.useFakeTimers();
//execute your code which contains setTimeout function herer
clock.tick();
assert();
clock.restore();