testing - 在 Flutter 测试中关闭对话框的正确方法
问题描述
Flutter 的 WidgetTester 有一个pageBack()
弹出路由栈的方法。fullscreenDialog
当我使用 MaterialPageRoute 的属性将页面作为全屏对话框打开时,该pageBack()
方法不起作用(“屏幕上应有一个后退按钮”)。我找不到工作的替代方法。
在 Flutter 测试中取消/关闭对话框的标准方法是什么?
我可以按如下方式关闭对话框:
await tester.tap(find.byIcon(Icons.close));
但后来我可以改为执行pageBack()
以下操作:
await tester.tap(find.byIcon(Icons.arrow_back));
为什么有pageBack()
关闭对话框的方法但没有等效方法?
我还没有编写我的 Cupertino UI。该测试是否需要寻找不同的图标?
另请参阅我在选择溢出菜单时遇到的类似问题。
更新:也许pageBack()
模拟按下系统后退按钮,而不是后退箭头?在这种情况下,无需在 iOS 上模拟该行为,无论如何,我必须通过图标找到后退按钮来模拟按下它。
解决方案
您可以有一个对话框,其中包含一个带有文本“X”的按钮,该按钮会弹出对话框。这个按钮,你可以找到
await tester.tap(find.text('X'));
别忘了用水龙头抽水
await tester.pumpAndSettle();
查看 Flutter 团队用于测试对话框的完整代码示例:源代码
推荐阅读
- javascript - Netsuite:在添加到销售订单之前分析行
- c# - VS xamarin 手机模拟器打不开
- javascript - 谷歌地图php中没有正确显示多个标记
- unit-testing - Flutter/Dart 单元测试,如何为 Timer 提前时间
- android - Android 编程 - Navigation Drawer 同一片段的多个实例
- python - 更改TEX_USE_CTEX的值后,manim动画显示中文失败
- javascript - React 提交表单返回 event.preventDefault 不是函数
- flutter - 在清单中找不到以下权限:2 [颤振]
- sharepoint - 如何为“保留以下主要版本数”设置默认值
- python - 在 Python 中使字符串变量成为命令