亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

模擬對象的目的是什么?

模擬對象的目的是什么?

子衿沉夜 2019-10-23 12:55:13
我是單元測試的新手,并且不斷聽到“模擬對象”一詞泛濫的聲音。用外行的話,有人可以解釋什么是模擬對象,以及在編寫單元測試時它們通常用于什么目的?
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

Mock對象是Test Double的一種。您正在使用模擬對象來測試和驗證被測類與其他類的協議/交互。


通常,您會期望“編程”或“記錄”期望值:方法調用您希望您的類對基礎對象執行的操作。


例如,假設我們正在測試一種服務方法來更新Widget中的字段。在您的體系結構中,有一個WidgetDAO可以處理數據庫。與數據庫的對話很慢,設置和清理之后很復雜,因此我們將模擬WidgetDao。


讓我們考慮一下服務必須做什么:它應該從數據庫中獲取一個Widget,對其進行處理,然后再次保存。


因此,在帶有偽模擬庫的偽語言中,我們將具有以下內容:


Widget sampleWidget = new Widget();

WidgetDao mock = createMock(WidgetDao.class);

WidgetService svc = new WidgetService(mock);


// record expected calls on the dao

expect(mock.getById(id)).andReturn(sampleWidget);   

expect(mock.save(sampleWidget);


// turn the dao in replay mode

replay(mock);


svc.updateWidgetPrice(id,newPrice);


verify(mock);    // verify the expected calls were made

assertEquals(newPrice,sampleWidget.getPrice());

這樣,我們可以輕松測試依賴于其他類的類的驅動開發。


查看完整回答
反對 回復 2019-10-23
  • 3 回答
  • 0 關注
  • 758 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號