如何防止在dart中使用expectAsync的单元测试进展?

时间:2014-11-21 23:23:23

标签: unit-testing asynchronous dart

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

1 个答案:

答案 0 :(得分:2)

我们需要看到您的代码能够找出确切的问题。

很可能你没有给expectAsync打电话。在您的代码等待异步回调的任何时候,必须至少有一个未完成的expectAsync函数等待调用。

您可以通过创建"完成"将所有内容减少到一个expectAsync来电。测试完成时调用的函数:

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