摘要: 我們應(yīng)該如何以及在哪里使用Mock對象呢?一般來說,對于目標(biāo)對象中的合作者對象,在測試時如果其狀態(tài)或行為的實(shí)現(xiàn)嚴(yán)重地依賴外部資源(比如數(shù)據(jù)持久化中的DAO,比如負(fù)責(zé)發(fā)送電子郵件的類),或者團(tuán)隊(duì)并行開發(fā)時,目標(biāo)對象的合作者對象并沒有實(shí)現(xiàn)(比如J2EE中,橫向分工時,負(fù)責(zé)Action的調(diào)用Service,負(fù)責(zé)Service調(diào)用DAO時,相應(yīng)的Service及DAO沒有實(shí)現(xiàn)),這時我們就需要模仿這些類。其實(shí),在做J2EE時,傳統(tǒng)的N層架構(gòu)中,我們都是面向接口編程的,我們定義了DAO接口,我們定義了Service接口,這樣做的優(yōu)點(diǎn)就是我們在測試時可以構(gòu)造實(shí)現(xiàn)接口的Mock類。這里不得不提依賴注入,通過依賴注入,我們才能在測試時set Mock對象。這也說明,為了方便測試,我們不得不一步一步重構(gòu)代碼,而模式就在重構(gòu)中自然地產(chǎn)生了。
閱讀全文
閱讀全文