簡體   English   中英

模擬一個靜態方法,該方法使用傳遞給它的參數調用void方法

[英]Mock a Static Method which calls a void method with arguments passed into it

我有getNameLength方法,我需要使用PowerMockito模擬setName方法。 我應該如何在setName emthod中模擬輸入參數(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();

}

做你的代碼所做的一切。

在你的實際問題上:你不需要模擬這樣的代碼。 您可以控制所有“輸入”(進入方法的StringBuilder); 你會得到一個價值。

所以你可以寫下一個簡單的斷言

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

例如(它檢查將“Test”添加到空構建器會產生一個4字符串)。

最后:你的問題似乎也是:你不了解一些關於java的基本知識,尤其是靜態的接縫。 您的示例代碼首先沒有意義。 因此:忘記嘲笑當下; 更好地專注於更好地理解代碼應該做的事情!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM