颤振小部件测试 - 如何执行“返回上一个屏幕”的测试

Posted

技术标签:

【中文标题】颤振小部件测试 - 如何执行“返回上一个屏幕”的测试【英文标题】:flutter widget testing - how to execute test to "Go Back to Prevoius Screen" 【发布时间】:2019-02-06 00:58:38 【问题描述】:

我正在 Flutter 中编写小部件测试。我找不到任何文档来执行“返回上一个屏幕”,因为我没有找到任何方法。请提供一些相同的示例“测试”代码。

【问题讨论】:

docs.flutter.io/flutter/flutter_test/WidgetTester/pageBack.html 感谢您的快速回复。有什么示例代码可以参考吗? @GünterZöchbauer 这个测试是否有一个按钮,但如果路由实际弹出则不测试。 ***.com/questions/50704647/… 我在进入页面后使用了 *tester.pumpAndSettle() * 然后尝试了 tester.goBack() 并且它起作用了。谢谢@Günter Zöchbauer 【参考方案1】:

你必须模拟导航观察者。

首先创建类class MockNavigatorObserver extends Mock implements NavigatorObserver

在你的测试文件中声明final mockObserver = MockNavigatorObserver();

将您的小部件放入MaterialApp 并添加属性navigatorObservers: [mockObserver],

最后在你的 testWidgets 块中 像这样模拟:

final mockObserver = MockNavigatorObserver();
final backIcon = find.byIcon(Icons.arrow_back_ios);
expect(backIcon, findsOneWidget);
await tester.tap(backIcon);
verify(mockObserver.didPop(any, any));
await tester.pumpAndSettle();

【讨论】:

以上是关于颤振小部件测试 - 如何执行“返回上一个屏幕”的测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤振小部件测试中发出 http 请求?

如何在颤振应用程序之上覆盖小部件?

在颤振测试中模拟悬停

颤振从单元\小部件测试调用http请求而不进行模拟

如何创建自定义颤振 sdk 小部件,重建颤振和使用新的小部件

所有小部件的颤振填充?