首頁  >  文章  >  Java  >  以下是一些標題選項,重點關注問題方面和核心問題/解決方案: 選項 1(直接): * 如何使用 Mockito Spies 模擬透過 `new()` 初始化的物件? 選項 2(問題

以下是一些標題選項,重點關注問題方面和核心問題/解決方案: 選項 1(直接): * 如何使用 Mockito Spies 模擬透過 `new()` 初始化的物件? 選項 2(問題

Linda Hamilton
Linda Hamilton原創
2024-10-27 11:11:30281瀏覽

Here are a few title options, focusing on the question aspect and the core problem/solution:

Option 1 (Direct): 
* How to Mock Objects Initialized with `new()` Using Mockito Spies? 

Option 2 (Problem-Focused):
* Mockito Mocking Challenge: Testing Classe

使用Mockito 測試帶有new() 運算子調用的類別

使用new() 運算符調用的類別

使用new() 運算符調用實例的模擬類別可能具有初始化實例的模擬類別可能具有初始化實例挑戰性,尤其是處理遺留程式碼時。其中一個範例是 TestedClass 類別中的 login() 方法,該方法實例化 LoginContext 物件。

嘗試使用 Mockito 測試此類時會出現挑戰,因為它需要在實例化之前進行 JAAS 安全設定。如果沒有外部呼叫 LoginContext,似乎不可能模擬該物件。

解決方案:利用Mockito Spies

為了克服這個障礙,Mockito 提供了spies,這是一個獨特的功能,允許你可以在真實的物體上創建間諜。間諜會呼叫被監視物件的實際方法,但如果需要,您仍然可以模擬或斷言特定方法。
<code class="java">TestedClass tc = spy(new TestedClass());
LoginContext lcMock = mock(LoginContext.class);

when(tc.login(anyString(), anyString())).thenReturn(lcMock);</code>

對於 TestedClass,解決方案如下:

在這裡,我們在 TestedClass 上創建一個間諜,有效地允許我們與真實方法交互並斷言我們期望的行為。透過模擬login()方法,我們可以控制回傳值並驗證傳遞給它的參數。

以上是以下是一些標題選項,重點關注問題方面和核心問題/解決方案: 選項 1(直接): * 如何使用 Mockito Spies 模擬透過 `new()` 初始化的物件? 選項 2(問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn