在我的主页小部件,当用户点击系统返回按钮,它显示由WillPopScope确认对话框小部件.我想测试这个对话框,但我不知道如何按下测试文件上的后退按钮。
kmpatx3s1#
我也遇到了同样的问题,但我的应用程序中没有后退按钮。我想测试一下android系统的后退按钮。我就是这么做的。也许这对遇到和我一样问题的人有帮助。
testWidgets("test onWillPop",(WidgetTester tester) async { bool willPopCalled = false; await tester.pumpWidget( MaterialApp( home: Scaffold( body: WillPopScope( onWillPop: () async { willPopCalled = true; return false; }, child: Container(), ), ), ), ); final dynamic widgetsAppState = tester.state(find.byType(WidgetsApp)); await widgetsAppState.didPopRoute(); await tester.pump(); expect(willPopCalled, true); });
灵感来源:https://github.com/flutter/flutter/blob/master/packages/flutter/test/material/will_pop_test.dart
whlutmcx2#
我不知道如何在测试文件上按后退按钮。这将帮助您在appbar(应用程序的顶部)上看到返回按钮。它将允许您通过appbar看到返回按钮
return WillPopScope( onWillPop: _onWillPop, child: Scaffold( appBar: AppBar( title: Text("Title"), centerTitle: true, leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.black), onPressed: () => _onWillPop(), ), ), body: Body(), ), );
_onWillPop将是您的问题的“确认对话框小部件”。
jdzmm42g3#
显然,您无法在测试中访问Navigator。所以我的解决方案是在pumped小部件中的某个地方包含BackButton,并像这样弹出页面:
Navigator
BackButton
await tester.pumpWidget(MaterialApp( home: Scaffold( body: Container( child: BackButton(), ), ), )); ... await tester.pageBack();
chy5wohz4#
下面的工作对我来说,因为我想一石二鸟,实际上确保返回按钮(这是在AppBar中默认生成的,不是我添加的)也出现了;
final backButton = find.byTooltip('Back'); await tester.tap(backButton);
然后显然只是pumpAndSettle,并测试您的其他屏幕。
4条答案
按热度按时间kmpatx3s1#
我也遇到了同样的问题,但我的应用程序中没有后退按钮。我想测试一下android系统的后退按钮。我就是这么做的。也许这对遇到和我一样问题的人有帮助。
灵感来源:https://github.com/flutter/flutter/blob/master/packages/flutter/test/material/will_pop_test.dart
whlutmcx2#
我不知道如何在测试文件上按后退按钮。
这将帮助您在appbar(应用程序的顶部)上看到返回按钮。它将允许您通过appbar看到返回按钮
_onWillPop将是您的问题的“确认对话框小部件”。
jdzmm42g3#
显然,您无法在测试中访问
Navigator
。所以我的解决方案是在pumped小部件中的某个地方包含BackButton
,并像这样弹出页面:chy5wohz4#
下面的工作对我来说,因为我想一石二鸟,实际上确保返回按钮(这是在AppBar中默认生成的,不是我添加的)也出现了;
然后显然只是pumpAndSettle,并测试您的其他屏幕。