第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 When vs Verify 驗(yàn)證方法調(diào)用

使用 When vs Verify 驗(yàn)證方法調(diào)用

交互式愛情 2023-04-13 14:49:51
這讓我很困惑,讓我用基本的例子來解釋;public void search(String name) {        // some more        Response response = component.findByName(name);        // some more action with response    }所以當(dāng)我為它編寫測(cè)試時(shí);@Testpublic void search_givenName_shouldOk() {    Example example = new Example();    Component component= Mockito.mock(Component.class);    String name = "test";    when(component.findByName(eq(name))).thenReturn(mock(Response.class));    example.search(name);    verify(component, times(1)).findByName(eq(name));}所以實(shí)際上當(dāng)我們用 eq(name) 輸入編寫 when(...) 子句時(shí),它不是已經(jīng)驗(yàn)證了我們的測(cè)試用例嗎?否則 findByName 將不會(huì)返回 Response 并且進(jìn)一步的調(diào)用將無法正常進(jìn)行。那么當(dāng)我們?cè)俅斡胿erify(..)驗(yàn)證它的時(shí)候,是不是加倍工作了呢?
查看完整描述

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è)試的東西。


查看完整回答
反對(duì) 回復(fù) 2023-04-13
?
搖曳的薔薇

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ì)象的行為與您期望的一樣。


查看完整回答
反對(duì) 回復(fù) 2023-04-13
  • 2 回答
  • 0 關(guān)注
  • 208 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)