You need to enable JavaScript to run this app. 使用mockito 5.0.13时verify(mockObserver.didPush(any,any))报any类型错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用mockito 5.0.13时verify(mockObserver.didPush(any,any))报any类型错误如何解决

问题修复方案

问题根因

Mockito 5.x 版本适配了 Dart 空安全规范,无类型的any默认是dynamic类型,不能直接传入非空类型的参数位,因此会触发类型不合法报错。

修复方法

方法1:使用带类型声明的匹配器(推荐)

NavigatorObserver的didPush方法入参分别是非空的Route类型、可空的Route?类型,你只需要给any指定对应类型即可:

verify(mockObserver.didPush(any<Route>(), any<Route?>()));

如果你的IDE对可空参数仍有报错,可以替换为anyOrNull匹配器:

verify(mockObserver.didPush(any<Route>(), anyOrNull<Route?>()));

方法2:临时兼容旧代码(不推荐)

如果需要快速适配大量旧测试代码,可以在测试文件头部忽略相关类型校验,该方案会关闭参数类型检查,可能隐藏潜在问题,仅建议临时过渡使用:

// ignore_for_file: argument_type_not_assignable

修改后你的完整测试代码如下:

(tester) async {
    await tester.pumpWidget(widget);
    await tester.tap(find.widgetWithText(TextButton, 'Join with us'));
    await tester.pumpAndSettle();
    verify(mockObserver.didPush(any<Route>(), any<Route?>()));
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 08:48:03