Для моих модульных тестов требуется установка, которая должна работать асинхронно. То есть мне нужно дождаться завершения настройки перед запуском тестов, но настройка связана с фьючерсами.
Как дождаться асинхронной установки в модульном тесте в Dart?
Ответы (2)
В 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.
person
Seth Ladd
schedule
21.02.2013
Хотя принятый ответ Сета верен, следующий пример может быть проще для понимания и повторного использования. Он возвращает Future
и выполняет настройку в асинхронной рабочей функции Future:
setUp(() {
return Future(() async {
await someFuture();
callSomeFunction();
await anotherFuture();
});
});
Тестовые случаи будут вызываться после возврата последнего вызова anotherFuture()
.
person
Ber
schedule
21.12.2020