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

如何Mock特定方法返回的Map,调用get方法时返回指定值?

错误原因

你当前的写法存在Mockito的Stub规则误用:Mockito解析when(provider.get().get(any())).thenReturn(ObjectOne)时,会优先匹配第一个被调用的Mock方法也就是provider.get(),它的返回值类型是Map<Enum, Object>,但你指定的返回值是Object类型,二者类型不匹配,因此抛出类型错误。


解决方法

你需要分两步Stub,先指定provider.get()返回一个你自定义的Mock Map实例,再单独为这个Map实例指定特定key的返回值。该Mock Map仅绑定到provider.get()的返回值,不会影响全局其他Map的行为,完全符合你的需求。
示例代码如下:

import org.mockito.Mockito;

// 前提:provider已经是Mockito生成的Mock实例
// 1. 声明一个专门给provider.get()用的Mock Map
Map<Enum, Object> mockMap = Mockito.mock(Map.class);
// 2. 为该Mock Map配置指定key的返回值
when(mockMap.get(Enum.ONE)).thenReturn(ObjectOne);
// 3. 配置provider.get()返回上面的Mock Map
when(provider.get()).thenReturn(mockMap);

配置完成后,调用provider.get().get(Enum.ONE)就会返回你预期的ObjectOne,未单独配置的其他key默认返回null,你也可以按需为其他key单独添加返回规则。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:18:03