C# Integration testing with rollback

Viewed 2054

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.

1 Answers
Related