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

