5.iOS測試總結(jié)
1. 什么是Mock
當(dāng)我們在做單元測試的過程中,為了保持測試又短又快和測試的隔離性,希望盡可能少地去實例化一些具體的組件。在現(xiàn)在面向?qū)ο蟮南到y(tǒng)中,被測試的對象很可能會依賴于幾個其他的對象,這時候我們就可以使用Mock去代替實例化這些對象。簡單來說,Mock就是在測試中偽造的具有預(yù)定行為的具體對象的替身對象。因為被測試對象無法分辨出具體對象和替身對象的差別,所以可以用替身對象去代替具體對象執(zhí)行測試。
2. 使用Mock的好處
構(gòu)造一些使用具體對象難以構(gòu)造或難以出現(xiàn)的對象。如我們朝服務(wù)器(第三方服務(wù)器)發(fā)送請求,也許100次中只返回一次Error,而當(dāng)我們要測試返回Error情況下的系統(tǒng)的行為是否符合預(yù)期,使用具體對象完成比較困難,這時候就需要構(gòu)造MockObject。
減少一些耗時的操作,例如我們需要測試訪問數(shù)據(jù)庫,而訪問這個數(shù)據(jù)庫開銷巨大的時候,我們可以構(gòu)造一個“虛擬”的數(shù)據(jù)庫,讓這個數(shù)據(jù)庫返回我們期望的特定值即可。
甚至有時候因為需要內(nèi)網(wǎng)或者屏蔽等原因,無法連接服務(wù)器的情況,也可以使用“虛擬”一個網(wǎng)絡(luò)連接或服務(wù)器,讓它返回我們期望的數(shù)據(jù)即可。