2011-10-27 85 views
0

每當我嘗試實際進行單元測試演示和嘲笑的看法,我最終運行到太多數據庫相關MVP模式:將數據庫依賴項與演示者分開?

public EditAccount(IAccountEditPage _view, ISession _session, IResponse _response) 
{ 

} 

public void view_SaveUser() 
{ 
    //Class that takes the view's data and persists it to DB 
} 

很明顯,我不能寫單元測試這個演講,因爲我有使用的凝固我的模型類具有強大的數據庫依賴性。

我該如何刪除對數據庫的依賴關係,而無需構造函數注入觸發演示者中數據庫的每個類?我不想每次看到我都有這樣的想法。

我使用moq,如果有幫助。

編輯:另外我應該提到的是,「view_SaveUser」中的代碼非常精簡,並不是直接訪問數據庫或類似的東西。通常只有幾行。我沒有超越主持人AFAIK的範圍。

+1

在你的數據提供者上有一個構造函數依賴關係很常見。我不熟悉MVP,但在MVC中,其標準實踐有一個IRepository構造函數參數。你也可以通過像DI這樣的DI容器來使用屬性注入。 – jrummell

回答

1

如果你不想在構造函數中注入實例,你的另一個選項是使用IoC框架的setter注入,如Spring.NetCastle Windsor注入依賴關係。

這樣做,您只需要在框架配置中指定哪些類用於實際代碼和測試項目,就會自動注入依賴關係,並避免使用構造函數。

+0

有趣;謝謝。大多數MVP模式的例子都很簡潔,缺乏真實世界的使用信息。 –