2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
when()
如果你想模擬一個(gè)函數(shù)的行為并因此避免測(cè)試它,你可以使用。
用于verify()
檢查函數(shù)是否已作為測(cè)試函數(shù)的一部分被調(diào)用。
這是兩個(gè)不同的概念。在您的情況下,這when()
沒有意義,因?yàn)槟獪y(cè)試該功能。此外,如果經(jīng)過測(cè)試的函數(shù)是某個(gè)Example
類的一部分,您也不希望模擬該函數(shù)。你只會(huì)嘲笑你不想測(cè)試的東西。

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
when
不驗(yàn)證任何東西,它只是指示模擬對(duì)象在被調(diào)用時(shí)如何表現(xiàn)。
所以你的斷言
當(dāng)您在輸入時(shí)使用“eq”時(shí),您已經(jīng)驗(yàn)證了是否使用該輸入調(diào)用了它。
是假的。
所以這條線:
when(component.findByName(eq(name))).thenReturn(mock(Response.class));
意思是“模擬組件,當(dāng)(如果)findByName
使用這個(gè)特定名稱調(diào)用你的方法時(shí),你能返回那個(gè)好的響應(yīng)嗎?”
當(dāng)您模擬了所有所需的行為并調(diào)用了實(shí)際測(cè)試的方法后,您仍然需要verify
模擬對(duì)象的行為與您期望的一樣。
添加回答
舉報(bào)