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

如何用Mockito捕获方法参数并执行真实方法?

解决方案:调用真实方法同时捕获参数

直接用@SpyBean替代@MockBean就能解决你的问题,核心原因如下:

  • @SpyBean基于Spring容器中的真实实例创建代理,既保留原有依赖注入,又能捕获方法调用的参数
  • 默认情况下所有方法都会执行真实逻辑,不需要额外配置willCallRealMethod()

具体代码实现

  1. 注入SpyBean和参数捕获器
@SpyBean
private ClassThatIsCalled classThatIsCalled;

@Captor
private ArgumentCaptor<TypeOfMyParameter> parameterCaptor;
  1. 执行测试并验证参数
// 运行你的测试流程,触发目标方法调用

// 验证方法被调用,并捕获传入的参数
verify(classThatIsCalled).callMethod(parameterCaptor.capture());

// 获取捕获的参数并做断言验证
TypeOfMyParameter capturedParam = parameterCaptor.getValue();
// 示例断言(可根据实际需求调整)
assertEquals(预期参数值, capturedParam);

原理说明

  • @MockBean会创建一个完全Mock的对象,即使设置willCallRealMethod(),这个Mock对象的依赖也不会被Spring注入,因此会出现依赖缺失报错
  • @SpyBean是对真实实例的包装:既会执行真实方法逻辑,又能通过Mockito的verify和ArgumentCaptor捕获调用参数,同时Spring会正常注入该类的所有依赖,完全匹配你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:02:13