【问题标题】: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(); })
});