我有一个屏幕(比如屏幕B),它使用动画一秒钟,然后显示UI元素。动画结束后,我需要得到一个按钮,并按下它。
这个屏幕在一个特定的屏幕之后(比如屏幕A)。我已经成功地编写了集成测试(使用integration_test),现在出现了这个屏幕。现在的情况是这样的-
- A有一个按钮,我点击它并执行
pumpAndSettle
1.由于按下按钮,出现B屏幕。
1.现在我需要等待1秒,然后当前视图动画到左边,一个新的视图出现,其中有一个按钮。 - I did pumpAndSettle(Duration(seconds:(1))
1.现在,在第4行代码之后,没有任何东西执行,测试直到超时才结束。
更多信息:
因此,有一个屏幕(说应用程序的主屏幕)上,我显示“进度指示器”,直到我有数据可用。
现在有一个屏幕被推到主屏幕的顶部(一种欢迎屏幕),用于新安装应用程序。
在那个屏幕欢迎屏幕,我有一个视图,我动画一秒钟后离开,并显示欢迎项目与跳过按钮。
所以
[1] expect(welcomeScreen, findsOneWidget);
[2] await Future.delayed(Duration(seconds: 1));
[3] await tester.pumpAndSettle();
上面的代码行工作正常,但如果我这样做,
[2Alt] await tester.pumpAndSettle(Duration(seconds: 1))
这是无限期的。
进一步
有一个跳过按钮,出现后1秒(在欢迎屏幕上),我点击跳过按钮,弹出欢迎屏幕,回到主屏幕,“进度指示器”正在旋转,直到收到数据。
expect(skipButton, findsOneWidget);
await tester.tap(skipButton);
await tester.pumpAndSettle();
这里pumpAndSettle占用无限时间(直到超时)
我不知道是什么原因。实际上pumpAndSettle正在做的是..如果我只泵,它的工作原理
1条答案
按热度按时间ne5o7dgx1#
尝试这个泵,直到你需要的东西出现.