模拟一个静态方法,它调用带有传入参数的void方法



我有getNameLength方法,我需要使用PowerMockito模拟setName方法。我应该如何模拟setName方法中的输入参数(sb, input),以便我可以使用模拟数据运行我的getNameLength测试用例?

public class ExampleClass{ 
  public static int getNameLength(StringBuilder sb ){
      setName(sb, "Test");
      return sb.toString().length();
  }
  public static void setName(StringBuilder sb, String input){
      sb.append(input);
  }
}

为什么需要这个set方法呢?

public static int getNameLength(StringBuilder sb ){
  sb.append(sb, "Test");
  return sb.toString().length();

}

所做的事情与您的代码所做的事情完全相同。

关于你的实际问题:你不需要这样的代码的mock。你控制所有的"输入"(进入方法的StringBuilder);你会得到一个值

你可以写一个简单的断言,比如

assertThat(getNameLength(new StringBuilder()), is(4));
例如

(它检查将"Test"添加到空构建器中是否会产生4个字符的字符串)。

最后:你的问题似乎也是:你不了解java的一些基本的东西,特别是static它接缝。您的示例代码从一开始就没有意义。因此:暂时忘记嘲笑;最好首先把重点放在更好地理解代码应该做什么上!

相关内容

  • 没有找到相关文章

最新更新