2017-08-15 68 views
2

我嘗試使用回滾進行集成測試。我使用SQL服務器。我的設置,這是我從這個topic了,看起來是這樣的:C#集成測試回滾

private TransactionScope scope; 

[TestInitialize] 
public void Initialize() 
{ 
    this.scope = new TransactionScope(); 
} 

[TestCleanup] 
public void TestCleanup() 
{ 
    this.scope.Dispose(); 
} 

測試方法:

var newUser = new UserDetailModel(); 
newUser.Id = 1; 
newUser.Email = "[email protected]"; 
newUser.FirstName = "Test"; 
newUser.LastName = "User"; 
newUser.UserName = "test.user"; 
await userManager.AddAsync(newUser); 

不應該有以dB爲單位的新用戶測試完成後,但我有db甚至測試中的新用戶已完成。

using (var transaction = unitOfWork.GetDbContext().Database.BeginTransaction()) 
{ 
    var newUser = new UserDetailModel(); 
    newUser.Id = 1; 
    newUser.Email = "[email protected]"; 
    newUser.FirstName = "Test"; 
    newUser.LastName = "User"; 
    newUser.UserName = "test.user"; 
    await userManager.AddAsync(newUser); 

    transaction.Rollback(); 
} 

回滾也不管用:我即使Database.BeginTransaction()嘗試同樣的方法。

+3

這不是一個單元測試;這是一個集成測試。單元測試會嘲笑依賴關係(即數據庫)。 –

回答