是否可以嘲笑企業庫5版本的'數據庫'?如果是這樣......怎麼樣?嘲笑企業庫5'數據庫'
有沒有IDatabase接口(這是一個謎,因爲我雖然微軟P將更多地暴露這種接口暴露測試性的好處)。
我有一個使用EntLib 5數據訪問應用程序塊的Repository類。
我是復古適合單元測試到這個類,並需要嘲笑依賴於數據庫對象。這個類是現在通過其構造函數傳遞數據庫,並使用數據庫對象在Db上執行操作。
我使用以下方法來解決數據庫的實例來傳遞給我的信息庫:
Container.RegisterType<IFooRepository, FooRepository>(
new InjectionConstructor(
EnterpriseLibraryContainer.Current.GetInstance<Database>("FooDbConnStr")
)
);
我不希望將這些單元測試成爲集成測試。
我已經嘗試過使用Moq創建數據庫類型的動態模擬,但事實證明這很棘手,因爲數據庫在其構造函數中需要連接字符串和DbProviderFactory。也許,如果有這樣的事情,一個MockDbProviderFactory。
這是單元測試正在採取以下形式:
題外話:我也發現使用一個靜態的Logger類很難測試的。希望我在這裏錯過了一些技巧,但是我必須說我對迄今爲止的可測試性感到失望。
對不起我的無知,但你有一個接口爲您的存儲庫,豈不是更容易嘲笑IFooRepository而不是數據庫? – thiagoleite 2012-07-13 17:24:48
我需要在此場景中模擬EntLib數據庫實例,以便單獨測試IFooRepository的實現。 – holsee 2012-07-17 22:06:07