我有一個工作,我有一個IDisposable DbContext。我想單元測試這個工作,而不打在數據庫中。我必須做什麼選擇?如何使用Unity處理IDisposable存儲庫?
我使用微軟的默認Fakes大會。
我的工作:
public void Work()
{
do
{
//code here
using (var repository = new Repository<User>())
{
repository.Save(user);
}
} while (true);
}
我想測試,並在這部分測試中,因爲它實際上創建存儲庫類的新實例失敗。
我的測試方法:
using (ShimsContext.Create())
{
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.Constructor = (a) => { };
Data.Repository.Fakes.ShimRepository<Domain.Fakes.ShimUser>.AllInstances.SaveT0 = (a, b) =>
{
};
var service = GetService();
service.Work(); //Throws exception
}
哪有我這個假方法Save
?
請參閱依賴注入 - 您需要允許傳入參數到Work()或至少進入服務,否則它總是創建一個真實的。 –
我並不熟悉Fakes,但也許它沒有完全滿足您的需求。我知道這對像Moq這樣的圖書館來說是微不足道的(https://github.com/Moq/moq4)。 –
這對於Moq來說也不是微不足道的,因爲他正在工作中實例化存儲庫的實際具體實例。 –