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()嘗試同樣的方法。
這不是一個單元測試;這是一個集成測試。單元測試會嘲笑依賴關係(即數據庫)。 –