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

TDD视角下无需新增测试,如何为Mockito.verify传入正确参数?

问题解答

1. 无需新增/参数化测试,传递Body参数到someObject.call的TDD步骤

严格TDD要求每一步都保持测试通过,你可以按以下小步调整:

  • 第一步:给handle方法添加Body参数,但保留硬编码调用
    修改Service的handle方法,让它接收Body参数,但内部依然用原来的硬编码值调用someObject.call。比如:
    // 修改后代码
    public void handle(Body body) {
      someObject.call("hardcoded_value"); // 还是硬编码
    }
    
    同时修改现有测试,调用handle时传入一个构造好的Body实例(其目标字段值设为原硬编码值),测试依然会通过——因为someObject.call的参数没变,验证逻辑也没改。
  • 第二步:把硬编码参数替换为Body中的对应值
    直接把someObject.call的参数换成Body里的目标字段,比如:
    // 修改后代码
    public void handle(Body body) {
      someObject.call(body.getTargetParam());
    }
    
    这时候测试依然通过——因为测试用的Body的targetParam就是原硬编码值,验证逻辑还是检查这个值,整个交互行为和之前完全一致。

整个过程没有新增测试,也不需要参数化,每一步都保持测试绿灯,符合严格TDD的小步推进要求。

2. 这类修改是否属于重构步骤?

严格来说,属于重构步骤。
重构的核心定义是:在不改变软件外部可观测行为的前提下,优化内部代码结构。你当前的修改只是把硬编码的参数来源从代码内移到了输入的Body中,但只要测试验证的交互逻辑(调用someObject.call的参数值)没有变化,软件的外部行为就和之前完全一致——输入特定Body时,输出的交互和硬编码版本完全相同。这种“替换参数来源但保持行为一致”的调整,完全符合重构的范畴,因为前后测试都能通过,说明外部行为没有被改变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:03:55