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

Flutter/Dart中Mockito是否有类似Java的调用真实方法的实现?

在Flutter/Dart中模拟对象时调用真实方法的实现方式

在Dart生态里,常用的mockito库(对应Java版Mockito)提供了两种类似thenCallRealMethod()的实现方式:

1. 生成Mock类时指定保留真实方法

通过@GenerateMocks注解的realCalls参数,可预先指定哪些方法保留真实实现。示例如下:

先定义原实体类:

class UserProfileEntity {
  String getFullName() {
    return "John Doe"; // 真实业务逻辑
  }
}

生成Mock类时指定要保留真实实现的方法:

@GenerateMocks([UserProfileEntity], realCalls: ['getFullName'])
void main() {
  final mockUser = MockUserProfileEntity();
  // 调用该方法时会执行真实实现
  print(mockUser.getFullName()); // 输出: John Doe
}

2. 动态指定调用真实方法

如果需要在测试过程中灵活控制,可通过thenAnswer直接调用真实对象的对应方法:

final realUser = UserProfileEntity();
final mockUser = MockUserProfileEntity();

// 当mock的getFullName被调用时,执行真实对象的方法
when(mockUser.getFullName()).thenAnswer((_) => realUser.getFullName());

这两种方式都能实现Java Mockito中thenCallRealMethod()的核心需求,可根据测试场景选择合适的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:14:53