在Java 中模擬靜態方法時,您可能會遇到需要選擇性地存根特定方法並返回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自存根特定方法並傳回自定義對象。 PowerMock 提供了實現此目的所需的功能。
要模擬靜態方法,您首先需要使用 PowerMockito.mockStatic() 為目標類別啟用靜態模擬。但是,如果類別包含多個具有不同傳回類型的靜態方法,則指派給此方法的預設應答策略可能會導致類型不符合錯誤。
相反,您應該使用一個-mockStatic() 的參數重載以啟用靜態模擬,然後使用PowerMockito.when() 和thenReturn() 指定各個方法所需的行為。這允許您為每個存根方法定義自訂返回值。
考慮一個具有兩個靜態方法的類,一個傳回String,另一個傳回int:
class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } }
要存根getString() 方法以傳回“Hello!”,您可以執行以下操作以下:
PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString());
請注意,getInt()方法沒有明確存根。它將使用傳回 0 的預設行為。
透過使用靜態模擬和存根技術的正確組合,您可以選擇性地模擬單一靜態方法並在 PowerMock 中傳回物件。這使您能夠測試和隔離 Java 程式碼中的特定靜態方法行為。
以上是如何使用 PowerMock 模擬單一靜態方法並傳回自訂物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!