2017-08-15 66 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

这不是一个单元测试;这是一个集成测试。单元测试会嘲笑依赖关系(即数据库)。 –

回答