【问题标题】:'Zombie promises' continuing after a mocha.js test timeout“僵尸承诺”在 mocha.js 测试超时后继续
【发布时间】:2013-12-23 02:38:42
【问题描述】:

我正在使用 Mocha.js 的测试设置和测试中的许多承诺。测试依赖于在 DOM 中设置的东西,并且在测试之间,DOM 被清除。但是,有时测试运行缓慢并超时。在这种情况下,它们的 Promise 会继续执行,但 DOM 在下一次测试之前被清除,因此 Promise 可能会错误地将错误抛出到下一次测试中。有没有办法在测试之间取消或销毁所有未完成的承诺?我们正在使用 when.js 承诺。

【问题讨论】:

    标签: javascript mocha.js promise when-js


    【解决方案1】:

    when.js 支持 cancel() method。您可以从 mocha 中的 afterEachafter 块调用它。您可能需要在每个 mocha 文件的顶部(或作为全局)创建一个数组来跟踪您的未完成承诺。

    【讨论】:

    • 看来这种方法有两个关键限制:
    • 抱歉,我以为 enter 会导致换行,上面的评论过早地进入了。这似乎是一种可行的方法,关键是在每次测试之前进行 DOM 清理,因为 afterEach 中的承诺 onReject 处理程序仍然可以访问预期状态。缺点是测试编写者需要将每个 Promise 添加到全局 tracked-promises 数组中,他们可能会忘记这样做。此外,如果 Promise 是在代码库的其他地方生成的,则可能很难将它们添加到数组中。
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 2021-01-10
    • 2012-03-20
    • 2021-05-21
    • 2015-09-08
    相关资源
    最近更新 更多