I try integration testing with rollback. I use SQL server. My setup, which I took from this topic, looks like this:
private TransactionScope scope;
[TestInitialize]
public void Initialize()
{
this.scope = new TransactionScope();
}
[TestCleanup]
public void TestCleanup()
{
this.scope.Dispose();
}
Testing method:
var newUser = new UserDetailModel();
newUser.Id = 1;
newUser.Email = "test@test.cz";
newUser.FirstName = "Test";
newUser.LastName = "User";
newUser.UserName = "test.user";
await userManager.AddAsync(newUser);
There shouldn't be a new user in db after the test is completed, but I have new user in db even test is finished. I even tried the same method with Database.BeginTransaction():
using (var transaction = unitOfWork.GetDbContext().Database.BeginTransaction())
{
var newUser = new UserDetailModel();
newUser.Id = 1;
newUser.Email = "test@test.cz";
newUser.FirstName = "Test";
newUser.LastName = "User";
newUser.UserName = "test.user";
await userManager.AddAsync(newUser);
transaction.Rollback();
}
Rollback doesn't work either.