У меня есть виджет с отслеживанием состояния, состояние которого зависит от асинхронного вызова чтения базы данных firebase. Пока данные выбираются, я отображаю индикатор ожидания. Как только выборка данных завершена, я отображаю фактический виджет ListView.
Я хочу написать тест виджета для проверки этой функциональности.
Как я могу установить значение isReadComplete = true в моем тесте? Или же
Как я могу явно вызвать success_callback () из моего теста?
bool isReadComplete;
App(){
isReadComplete = false;
firestore.collection('collection').document('doc').get().then((doc) {
success_callback(doc.data);
}).catchError((error) => {});
}
void success_callback(var data){
setState((){
isReadComplete = true;
})
}
@override
Widget build(BuildContext context) {
if (!isReadComplete) {
return new CircularIndicator();
} else {
List<Widget> widgetList = [];
return Scaffold(
body: ListView(
padding: EdgeInsets.all(8.0),
children: widgetList,
));
}
}
// Test for CircularProgressIndicator
testWidgets("Check CircularProgressIndicator", (WidgetTester tester) async {
await tester.pumpWidget(new MaterialApp(home: App));
// This works fine since isReadComplete = false
expect(find.byType(CircularProgressIndicator), findsOneWidget);
});
// Test for ListView
testWidgets("Check ListView", (WidgetTester tester) async {
await tester.pumpWidget(new MaterialApp(home: App));
// How do I do this?
// How to call success_callback()?
// How to set isReadComplete = true?
expect(find.byType(ListView), findsOneWidget);
});