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

如何用Mockito模拟按引用传递的方法输出参数为预设值?

Mockito模拟void方法修改参数为预设值

要实现调用service.method()时将传入的Set<Long> out参数设置为预设集合x的内容,你需要用Mockito的doAnswer拦截方法调用,手动修改参数内容,具体代码如下:

Set<Long> x = new HashSet<>();
x.add(1L);

// 替换原有的doNothing,通过Answer处理参数修改
Mockito.doAnswer(invocation -> {
    // 获取方法传入的第三个参数(索引从0开始计数)
    Set<Long> out = invocation.getArgument(2);
    // 清空原有内容,再添加预设集合x的所有元素,实现"设置为预设值"的效果
    out.clear();
    out.addAll(x);
    return null; // 目标方法是void类型,返回null即可
}).when(service).method(anyLong(), anyLong(), anySet());

关键说明:

  • doAnswer允许你在模拟方法被调用时自定义逻辑,这里用来操作传入的集合参数
  • invocation.getArgument(2)精准获取第三个参数(out)
  • 如果需求是追加预设值而非覆盖原有内容,移除out.clear()即可

内容的提问来源于stack exchange,提问作者Gábor DANI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:05:25