C#集成测试与回滚

3

我尝试使用回滚进行集成测试。我使用SQL Server数据库。我的设置如下,是从这个主题中获取的:

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 = "test@test.cz";
newUser.FirstName = "Test";
newUser.LastName = "User";
newUser.UserName = "test.user";
await userManager.AddAsync(newUser);

在测试完成后数据库中不应该有新用户,但测试结束后我在数据库中发现了新用户。我甚至尝试使用 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();
}

回滚也不起作用。


3
这不是单元测试,而是集成测试。单元测试会模拟依赖项(例如数据库)。 - Kenneth K.
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接