我正在使用ModalProgressHud
来显示微调框,它正在等待服务器的答复。我想测试一下,当用户点击按钮时,会显示CircularProgressIndicator
。我的问题是pumpAndSettle()
会超时,因为我认为CircularProgressIndicator
会不断重建自身。关于如何测试CircularProgressIndicator
是否存在任何建议?
这是我的测试:
testWidgets(
'Should show a CircularProgressIndicator while it tries to login', (WidgetTester tester) async {
await (tester.pumpWidget(
generateApp(LoginView())
));
await tester.pumpAndSettle();
await tester.tap(find.byType(FlatButton));
await tester.pumpAndSettle();
expect(find.byType(CircularProgressIndicator), findsOneWidget);
});
答案 0 :(得分:1)
您应该创建一个“正在加载” bool
,并在登录屏幕之前创建setState((){})
,并在评估登录是否成功时使用另一个{1>}。
我不确定如何遵循您的代码,但也许像这样...
bool loading = false;
testWidgets(
'Should show a CircularProgressIndicator while it tries to login', (WidgetTester tester) async {
loading == false ? setState((){
loading = true;
await (tester.pumpWidget(
generateApp(LoginView())
));}
await tester.pumpAndSettle();
await tester.tap(find.byType(FlatButton));
await tester.pumpAndSettle();
expect(find.byType(CircularProgressIndicator), findsOneWidget);
});
答案 1 :(得分:1)
您的想法是正确的-您不能pumpAndSettle
,因为CircularProgressIndicator会无限期地动画。您可以尝试将tester.pump()
和超时一起使用,而不要使用pumpAndSettle
。