在AngularJS中使用$ timeout-Mock延迟

时间:2013-07-09 06:25:51

标签: unit-testing testing angularjs

我使用了$timeout延迟时间为一些服务代码600毫秒。在相应的测试中,我想声明代码确实在给定的600 ms之后完成预期的操作。有没有办法在一定时间内及时进展(类似于jasmine.Clock.tick(600))?我只知道$timeout.flush(),但它会触发当前$ timeout-queue中的所有内容。

1 个答案:

答案 0 :(得分:7)

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

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

Link to the documentation