3 回答

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());
這樣,我們可以輕松測試依賴于其他類的類的驅動開發。
- 3 回答
- 0 關注
- 758 瀏覽
添加回答
舉報