Интересно, как я могу протестировать случай, когда будущее еще не завершено в тестах виджетов флаттера.
Виджет должен показывать счетчик, пока будущее не разрешено.
Iиспользуйте этот тестовый пример:
testWidgets(
'should show a spinner when loading',
(WidgetTester tester) async {
when(valueRepository.getValues())
.thenAnswer((_) => Future.delayed(Duration(seconds: 30), () => []));
await tester.pumpWidget(withApp(ValueListPage(
valueRepository: valueRepository,
)));
await tester.pumpAndSettle(
Duration(seconds: 10), EnginePhase.build, Duration(minutes: 1));
expect(find.byType(CircularProgressIndicator), findsOneWidget);
},
);
Результат: будущее разрешается, и ожидание не выполняется.
Примечание: withApp инициализирует приложение с локализацией.Из-за этого мне нужно позвонить tester.pumpAndSettle()
, чтобы дождаться l10n.