svi*_*i3c 5 flutter flutter-test
我想知道如何在 flutter 小部件测试中尚未完成未来的情况下测试案例。
只要未来未解决,小部件就应该显示一个微调器。
我试过这个测试用例:
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);
},
);
Run Code Online (Sandbox Code Playgroud)
结果:未来解决,期望落空。
注意:withApp 初始化一个带有本地化的应用程序。因此,我必须打电话tester.pumpAndSettle()等待 l10n。
我找到了 fakeAsync 的有效解决方案:
testWidgets(
'should show a spinner when loading',
(WidgetTester tester) async {
when(valueRepository.getValues()).thenAnswer(
(_) => Future.delayed(Duration(seconds: 1), () => []));
await tester.pumpWidget(withApp(ValueListPage(
valueRepository: valueRepository,
)));
await tester.pump();
expect(find.byType(CircularProgressIndicator), findsOneWidget);
await tester.pumpAndSettle();
expect(find.byType(CircularProgressIndicator), findsNothing);
},
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3615 次 |
| 最近记录: |