簡體   English   中英

如何使用 PowerMockito 在另一個 static 方法中模擬 static 方法?

[英]How to mock a static method inside another static method using PowerMockito?

我有一個名為ParticipantUtils.java class 的 java 包含 static 方法,如下所示:

public class ParticipantUtils {
      
    public static boolean isAlpha(String inputString) {
        if (Character.isLetter(inputString[0]) return true;
        return false;
    }

    public static String getNationalNumberJP(String input) {
        if (isAlpha(input)) return input;
        return "Invalid input";
    }
}

我正在編寫@Test來測試ParticipantUtilsTest.java中的 function getNationalNumberJP() ,如下所示:

@RunWith(PowerMockRunner.class)
@PrepareForTest({ParticipantUtils.class})
public class ParticipantUtilsTest {
    
    @Test
    public void getNationalNumberJP_input_is_alpha(){
        PowerMockito.mockStatic(ParticipantUtils.class);
        String input = "ABCD";
 
        PowerMockito.when(ParticipantUtils.isAlpha("ABCD")).thenReturn(true);
        assertEquals("ABCD", ParticipantUtils.getNationalNumberJP(input));
    }   
}

但是,這是行不通的。 當調用 function isAlpha(input)時,它不會返回true 我在assertEquals(...)行收到此錯誤

錯誤圖片

如何解決這個問題?

您是 mocking ParticipantUtils class。這包括getNationalNumberJP() 您沒有為(因為您想測試它)提供模擬行為,因此模擬不知道該怎么做並返回返回類型的默認值(對於引用類型是null )。 您的問題不是isAlpha()沒有返回true 如果這是問題所在,那么“實際”將是“無效輸入”而不是null

你根本不需要在這里嘲笑。 無論如何, isAlpha()的結果在您的測試用例中都是true的。

暫無
暫無

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

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