如何使用 Mockito 透過 `new()` 呼叫來模擬類別?
使用Mockito 透過New() 呼叫來模擬類別
遺留類別通常在內部實施對象,這使得使用模擬測試它們變得具有挑戰性像Mockito 這樣的框架。當設定複雜的依賴項時,例如需要外部設定的安全上下文,這一點變得很明顯。
考慮範例類:
<code class="java">public class TestedClass { public LoginContext login(String user, String password) { LoginContext lc = new LoginContext("login", callbackHandler); } }</code>
我們想要測試這個類,但是login()方法實例化一個LoginContext 對象,在不重構程式碼的情況下使模擬變得複雜。
Mockito 可以模擬 LoginContext 嗎?
是的,可以透過以下方式使用 Mockito 來模擬 LoginContext 類別:利用間諜的強大功能。與存根不同,間諜呼叫被監視物件的真實方法(除非方法已被存根)。
使用Spies 來模擬LoginContext
來模擬在不改變原始程式碼的情況下,我們可以使用以下方法:
<code class="java">TestedClass tc = spy(new TestedClass()); LoginContext lcMock = mock(LoginContext.class); when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>
結論
透過策略性地使用間諜,我們可以有效地模擬內部實例化物件的類,即使原始程式碼保持不變。這項技術使我們能夠有效地測試此類類別並確保它們的行為符合預期。
以上是如何使用 Mockito 透過 `new()` 呼叫來模擬類別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
