將 Null 與 Mockito 匹配
瀏覽人數:720最近更新:
一、概述
在這個簡短的教程中,我們將使用 Mockito 檢查null
是否作為參數傳遞給方法。我們將看到如何直接匹配null
並使用ArgumentMatchers
。
2. 示例設置
首先,讓我們創建一個簡單的Helper
類,其中包含一個單獨的concat()
方法,返回兩個String
的連接:
class Helper {
String concat(String a, String b) {
return a + b;
}
}
我們現在將添加一個Main
類。它的方法methodUnderTest()
調用concat()
以將String
Baeldung
與null
連接起來:
class Main {
Helper helper = new Helper();
String methodUnderTest() {
return helper.concat("Baeldung", null);
}
}
3. 只使用精確值
讓我們設置測試類:
class MainUnitTest {
@Mock
Helper helper;
@InjectMocks
Main main;
@BeforeEach
void openMocks() {
MockitoAnnotations.openMocks(this);
}
// Add test method
}
感謝@Mock
我們創建了一個模擬的Helper
。然後我們通過@InjectMocks
將它注入到我們的Main
實例中。最後,我們調用MockitoAnnotations.openMocks()
來啟用 Mockito 註釋。
我們的目標是編寫一個單元測試來驗證methodUnderTest()
委託給concat()
。此外,我們要確保第二個參數為null
。讓我們保持簡單並檢查調用的第一個參數是Baeldung
而第二個參數是null
:
@Test
void whenMethodUnderTest_thenSecondParameterNull() {
main.methodUnderTest();
Mockito.verify(helper)
.concat("Baeldung", null);
}
我們調用Mockito.verify()
來檢查參數值是否符合預期。
4.使用匹配器
我們現在將使用 Mockito 的ArgumentMatchers
來檢查傳遞的值。由於第一個值與我們的示例無關,我們將使用any()
匹配器:因此,任何輸入都將通過。要檢查第二個參數是否為null
,我們可以簡單地使用isNull()
:
@Test
void whenMethodUnderTest_thenSecondParameterNullWithMatchers() {
main.methodUnderTest();
Mockito.verify(helper)
.concat(any(), isNull());
}
5.結論
在本文中,我們學習瞭如何使用 Mockito 驗證傳遞給方法的參數是否為null
。我們通過檢查精確值和使用ArgumentMatchers
來做到這一點。
與往常一樣,代碼在 GitHub 上可用。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議