You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何Mock Go Router?Flutter单元测试导航报错求助

Flutter单元测试Mock GoRouter.replace报错解决方法
  • 问题原因:GoRouter的replace方法返回类型是Future<Object?>,你当前用thenAnswer((_) async {})返回的是Future<void>(等价于Future<Null>),类型不匹配导致类型转换错误。

  • 修复代码:修改thenAnswer的返回值,返回符合Future<Object?>类型的结果,比如:

    when(() => mockRouter.replace(any())).thenAnswer((_) async => null);
    // 或者更简洁的写法
    when(() => mockRouter.replace(any())).thenAnswer((_) => Future.value(null));
    
  • 额外验证步骤:如果需要确认路由跳转的目标路径是否正确,测试结束后可以添加验证逻辑:

    verify(() => mockRouter.replace('/你期望的路由路径')).called(1);
    
  • 确认Mock类正确性:确保你的Mock类正确实现GoRouter接口:

    class MockGoRouter extends Mock implements GoRouter {}
    

内容的提问来源于stack exchange,提问作者Gabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 06:10:56