首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在颤动中通过Navigator测试导航

如何在颤动中通过Navigator测试导航
EN

Stack Overflow用户
提问于 2018-06-06 00:13:12
回答 4查看 20K关注 0票数 30

比方说,我使用WidgetTester在Flutter中测试了一个屏幕。有一个按钮,它通过Navigator执行导航。我想测试一下那个按钮的行为。

小工具/屏幕

代码语言:javascript
复制
class MyScreen extends StatefulWidget {

  MyScreen({Key key}) : super(key: key);

  @override
  _MyScreenState createState() => _MyScreenScreenState();
}

class _MyScreenState extends State<MyScreen> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
            child: RaisedButton(
                onPressed: () {
                    Navigator.of(context).pushNamed("/nextscreen");
                },
                child: Text(Strings.traktTvUrl)
            )
        )
    );
  }

}

测试

代码语言:javascript
复制
void main() {

  testWidgets('Button is present and triggers navigation after tapped',
      (WidgetTester tester) async {
    await tester.pumpWidget(MaterialApp(home: MyScreen()));
    expect(find.byType(RaisedButton), findsOneWidget);
    await tester.tap(find.byType(RaisedButton));
    //how to test navigator?    
  });
}

有没有合适的方法检查一下,那个Navigator是怎么调用的?或者有没有办法模拟和替换导航器?

请注意,上述代码实际上将失败并引发异常,因为应用程序中没有声明命名路由'/nextscreen'。这很容易解决,而且你不需要指出它。

我主要关心的是如何在Flutter中正确地处理这个测试场景。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50704647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档