How to wait for an asynchronous setup in a unit test, in Dart?


My unit tests require a setup that needs to run asynchronously. That is, I need to wait for the setup to finish before the tests are run, but the setup deals with Futures.


With Dart M3, the setUp function can optionally return a Future. If setUp returns a Future, the unittest framework will wait for the Future to complete before running the individual test methods.

Here is an example:

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

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

Learn more about setUp.

Answered By – Seth Ladd

Answer Checked By – Terry (FlutterFixes Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *