我使用Mockito單元測試業務對象。業務對象使用通常從數據庫獲取數據的DAO。爲了測試業務對象,我意識到,這是更容易使用一個單獨的內存DAO(而保持一個HashMap中的數據),而不是寫的所有部分嘲笑被認爲是不好的做法? (Mockito)
when(...).thenReturn(...)
語句。要創建這樣一個DAO,我開始局部嘲笑我的DAO接口,像這樣:
when(daoMock.getById(anyInt())).then(new Answer() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
int id = (Integer) invocation.getArguments()[0];
return map.get(id);
}
});
,但它發生,我認爲它只是實現了一個全新的DAO實現自己較容易(使用內存中的HashMap)甚至沒有使用Mockito(不需要從InvocationOnMock對象中獲取參數),並使測試的業務對象使用這個新的DAO。
此外,我讀過部分嘲諷被認爲是不好的做法。我的問題是:在我的情況下,我正在做一個不好的做法?有什麼缺點?對我來說這似乎很好,我想知道潛在的問題可能是什麼。
謝謝。這對我來說是非常有用的建議:)我會在閱讀這篇文章之前先等待其他答案,然後再將其標記爲已接受的答案。 – machinery