我正在研究TDD,並且遇到了可以使用一些幫助的場景。TDD在內部構造函數中注入Mocked Repository(UnitOfWork)
我的項目使用MVC3,並被構建爲具有BAL和DAL層。每個圖層都在其自己的項目中。 BAL通過Repository Pattern訪問數據庫。由於我使用的是EntityFramework,我還實現了UnitOfWork模式。以下是在BAL服務類的樣子:
public class ExampleService
{
private UnitOfWork unitOfWork;
private bool isProcessing = false;
internal ExampleService(UnitOfWork unitOfWork)
{
this.unitOfWork = unitOfWork;
}
public void ExposedMethod()
{
//do stuff with the unitOfWork
}
}
問:我想這個創建單元測試(顯然我應該寫代碼之前測試)。但是,如果我按原樣運行代碼,測試將是一次集成測試,因爲它將使用UnitOfWork並連接到我的數據庫。我可以模擬一個新的可以訪問內存中的虛擬數據的UnitOfWork,但我不知道如何注入它,因爲構造函數是內部的。我寧願不寫出駐留在每個項目中的單元測試。
有什麼想法?
[InternalsVisibleTo]將按原樣解決我的問題。我可能仍然缺少DI的一些東西,但是我展示的示例類是在BAL中,UnitOfWork在DAL中。我有內部標記的構造函數,因爲我有另一個類來控制對示例類的訪問。我將不得不考慮這一點。謝謝! – AFrieze