如何在Dart的单元测试中等待异步设置?

时间:2013-02-21 04:24:03

标签: dart dart-unittest

我的单元测试需要一个需要异步运行的设置。也就是说,我需要等待设置在测试运行之前完成,但设置处理Futures。

2 个答案:

答案 0 :(得分:10)

使用Dart M3,setUp函数可以选择返回Future。如果setUp返回Future,则单元测试框架将等待Future完成,然后再运行各个测试方法。

以下是一个例子:

group(('database') {
  var db = createDb();
  setUp(() {
    return openDatabase()
      .then((db) => populateForTests(db));
  });

  test('read', () {
    Future future = db.read('foo');
    future.then((value) {
      expect(value, 'bar');
    });
    expect(future, completes);
  });
});

详细了解setUp

答案 1 :(得分:1)

虽然赛斯接受的答案是正确的,但以下示例可能更易于理解和重用。它返回一个 Future 并在 Future 的异步工作函数中执行设置:

setUp(() {
  return Future(() async {
    await someFuture();
    callSomeFunction();
    await anotherFuture();
  });
});

测试用例将在最后一次调用 anotherFuture() 返回后调用。