3

$timeout在某些服务代码中使用了例如 600 毫秒的延迟。在相应的测试中,我想断言代码在给定的 600 毫秒后确实完成了预期的工作。有没有什么方法可以在一定的时间内(类似于jasmine.Clock.tick(600))及时推进?我只知道$timeout.flush(),但这会触发当前 $timeout-queue 中的所有内容。

4

1 回答 1

7

在 AngularJS 1.2 版中你可以做$timeout.flush(600),这类似于 Jasmine 的jasmine.Clock.tick(600).

除此之外,Angular 1.2 提供了一个非常方便的$timeout.flushNext(msec)方法。它的不同之处在于flush(msec),该方法不是简单地将时钟提前给定时间,然后检查是否发生了预期的事情,flushNext()而是同时执行这两项任务。它会提前一个时钟,直到下一个延迟事件被触发,然后验证经过的时间是否等于给定的时间。

链接到文档

于 2013-09-16T15:04:29.683 回答