【问题标题】:how to prevent progressing from a unit test that uses expectAsync in dart?如何防止在 dart 中使用 expectAsync 的单元测试进展?
【发布时间】:2014-11-21 23:23:23
【问题描述】:

我有一些单元测试都是异步执行的。但事实证明,即使我在单元测试中多次调用expectAsync(有时这可能涉及对expectAsync的多个嵌套异步调用),单元测试仍然退出并调用tearDown方法,这有效地切断了我的我的异步测试运行的基础设施。我想要发生的是让我的测试运行并等到所有期望(异步与否)都已完成,然后再继续下一个测试。这有可能实现吗?我的单元测试到目前为止一直通过的原因是因为 tearDown 中的清理代码也在执行异步,但理想情况下它应该可以在异步或立即清理的情况下工作。

【问题讨论】:

    标签: unit-testing asynchronous dart


    【解决方案1】:

    我们需要查看您的代码才能查明确切的问题。

    很可能您调用expectAsync 的次数不够多。在您的代码等待异步回调的任何时候,都必须至少有一个未完成的expectAsync 函数等待调用。

    您可以通过创建一个在测试完成时调用的“done”函数将其全部缩减为一个 expectAsync 调用:

    test("ladadidadida", () {
      var done = expectAsync((){});
      something.then((a) { return somethingElse(); })
               .then((b) { expect(a, b); done(); })
    });
    

    【讨论】:

    • 它每次使用这个helper method进入另一个异步“循环”时都会调用expectAsync
    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2012-10-29
    • 2016-05-01
    • 2017-12-30
    相关资源
    最近更新 更多