【问题标题】:Using $timeout-Mock in AngularJS with delay在 AngularJS 中延迟使用 $timeout-Mock
【发布时间】:2013-07-09 06:25:51
【问题描述】:

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

【问题讨论】:

    标签: unit-testing testing angularjs


    【解决方案1】:

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

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

    Link to the documentation

    【讨论】:

    • 很高兴看到这是为 1.2 版添加的。但这对我们没有帮助,因为我们目前坚持使用 1.0 版。不过,感谢您指出此功能将可用。
    • 可能值得注意的是,这存在于1.2.0,但从1.2.1 开始。
    • AFAICT,flushNext 功能好像没了,但flush 功能还在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2014-04-11
    • 1970-01-01
    • 2015-03-08
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多