在AngularJS中使用$ timeout-Mock延迟

ale*_*683 3 testing unit-testing angularjs

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

Ale*_*yda 7

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

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

链接到文档