How to wait for an asynchronous setup in a unit test, in Dart?
dart, dart-unittest
Solution
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 = db.read('foo');
future.then((value) {
expect(value, 'bar');
});
expect(future, completes);
});
});
Learn more about setUp.
Problem
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.