如何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
相关产品推荐
相关产品推荐

