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

coVerify验证失败:CallInfo实例匹配异常,测试不通过求助

Mockito验证失败问题

报错信息:

Verification failed: call 1 of 1: CallHandler(#1).handleSingleCall(eq(CallInfo@f5b7b13))). No matching calls found.

Calls to same method:
1) CallHandler(#1).handleSingleCall(CallInfo@73128b3a)
2) CallHandler(#1).handleSingleCall(CallInfo@7fdcccd5)

你的验证代码:

coVerify { callHandlerMock.handleSingleCall(callInfo) }

问题原因:

你验证用的callInfo实例和实际调用时传入的两个CallInfo对象,在Mockito的匹配逻辑里不相等。Mockito默认用对象的equals()方法判断参数是否匹配,如果你的CallInfo类没有重写equals()和hashCode(),就会用对象的内存地址做比较,这三个实例地址不同,自然匹配失败。

解决办法:

  • 规范方案:给CallInfo类重写equals()和hashCode()方法,让逻辑上相同的实例能被判定为相等(比如根据类里的业务属性来判断)。
  • 临时替代方案:用Mockito的参数匹配器自定义匹配逻辑,不用依赖equals:
    coVerify { callHandlerMock.handleSingleCall(argThat { 
        // 替换成你的匹配条件,比如对比属性
        this.userId == callInfo.userId && this.requestData == callInfo.requestData
    }) }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:05:25