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()尝试同样的方法。
这不是一个单元测试;这是一个集成测试。单元测试会嘲笑依赖关系(即数据库)。 –