如何防止在 dart 中使用 expectAsync 的单元测试进展?
Posted
技术标签:
【中文标题】如何防止在 dart 中使用 expectAsync 的单元测试进展?【英文标题】:how to prevent progressing from a unit test that uses expectAsync in dart? 【发布时间】:2014-11-21 23:23:23 【问题描述】:我有一些单元测试都是异步执行的。但事实证明,即使我在单元测试中多次调用expectAsync(有时这可能涉及对expectAsync的多个嵌套异步调用),单元测试仍然退出并调用tearDown方法,这有效地切断了我的我的异步测试运行的基础设施。我想要发生的是让我的测试运行并等到所有期望(异步与否)都已完成,然后再继续下一个测试。这有可能实现吗?我的单元测试到目前为止一直通过的原因是因为 tearDown 中的清理代码也在执行异步,但理想情况下它应该可以在异步或立即清理的情况下工作。
【问题讨论】:
【参考方案1】:我们需要查看您的代码才能查明确切的问题。
很可能您调用expectAsync
的次数不够多。在您的代码等待异步回调的任何时候,都必须至少有一个未完成的expectAsync
函数等待调用。
您可以通过创建一个在测试完成时调用的“done”函数将其全部缩减为一个 expectAsync
调用:
test("ladadidadida", ()
var done = expectAsync(());
something.then((a) return somethingElse(); )
.then((b) expect(a, b); done(); )
);
【讨论】:
它每次使用这个helper method进入另一个异步“循环”时都会调用expectAsync以上是关于如何防止在 dart 中使用 expectAsync 的单元测试进展?的主要内容,如果未能解决你的问题,请参考以下文章