4

Ayende前段時間寫了一套關於如何Repositories are the new Singletons模式的文章。我已經閱讀了他們的所有內容,我認爲並且我同意他的幾點看法。大多數情況下,我看到有數十個存儲庫的項目,這些存儲庫只是爲了抽象一個ORM的用法,它已經抽象了數據庫訪問。存儲庫是單元測試必需的東西嗎?

避免他們之後,我開始有一些問題,因爲一些奧姆斯是難以模擬軟件件,或至少EF是隔離我的UT代碼。 Ayende的一些項目使用內存數據庫進行測試,但即使它工作正常,我也不想這樣做。

所以,這是我的問題:我不喜歡有幾十個典型的資源庫,也沒有通用的存儲庫既不不過,我想有一個簡單的方法來隔離我的代碼。

當前版本庫僅對UT有用嗎?

注意:我說的數據庫訪問,不是抽象其他類型的如遠程服務的數據源。

回答

5

對我來說,因爲他們隔離業務邏輯代碼的持久性相關的代碼庫(或DAO的)是有用的。

之一(期望的)的副作用是,無論是業務邏輯代碼和數據訪問代碼變得更容易測試。

另一個期望的副作用是,持久性相關的方法是由多個業務邏輯服務容易resusable。

+1

我認爲OP是在ORM之上提出一個關於使用存儲庫的問題。 ORM通常會提供一些你想要的現成副作用,但可能很難進行單元測試(EF)。 –

+0

這是正確的,我的問題是關於ORM上的存儲庫。 – lontivero

+3

我的答案是關於ORM上的倉庫。您仍然必須使用ORM編寫查詢,並且應該測試這些查詢。 –