處理包含多個靜態方法的類別時,在模擬單一靜態方法的同時確保它存在的挑戰就出現了回傳一個物件。以下是使用 PowerMockito 的詳細解決方案:
啟用靜態模擬:
首先為要使用 PowerMockito 修改的類啟用靜態模擬。模擬靜態(類.類)。這允許您為該類別中的靜態方法設定特定行為。
存根方法:
指定目標的行為靜態方法,使用when-thenReturn語法。例如:
when(Class.m1(param1, param2)).thenReturn(objectToReturn);
這指定當使用給定參數呼叫 m1 時,它應該傳回提供的物件。
避免預設回傳值:
預設情況下,PowerMockito 為未存根的靜態方法提供自己的預設值。要覆寫此並傳回自訂對象,至關重要的是使用 1 參數版本的 mockStatic 而不指定預設策略。
範例實作:
考慮以下程式碼片段:
PowerMockito.mockStatic(Static.class); when(Static.m1("param1", "param2")).thenReturn(new Object());
此程式碼模擬Static 類別中的靜態方法m1 並存根它以傳回物件的新實例。
使用模擬方法:
一次靜態方法已被模擬和存根,您可以照常使用它。此方法呼叫將被 PowerMockito 攔截並傳回指定的物件。
請記住,這裡的關鍵區別是使用1 參數版本的mockStatic 來啟用靜態模擬,而無需指定預設策略,然後使用when-thenReturn 語法對單一靜態方法進行存根以傳回物件。
以上是如何使用 PowerMockito 模擬傳回物件的單一靜態方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!