编辑: 这个问题已经讨论过,似乎已经解决here。
我目前正在为DbContext编写单元测试。为了在每次测试后将数据库(LocalDb)恢复到以前的状态,我使用以下方法:
Private _transactionScope As TransactionScope
<TestInitialize>
Public Sub Initialize()
_transactionScope = New TransactionScope(TransactionScopeOption.Required)
End Sub
<TestCleanup>
Public Sub TearDown()
_transactionScope.Dispose()
End Sub
这很好用。然而。我现在创建了数据库操作的异步变体。一个例子:
Public Function AddMemberAsync(member as MemberEntity) As Task
Return Task.Run(Sub()
AddMember(member)
End Sub)
End Function
单元测试现在显示:
<TestMethod>
Public Async Function TestAdd() As Task
Await _myDb.AddMemberAsync(someMember)
End Function
此设置导致测试失败,因为TransactionScopes超时。 当我使用其他方法恢复数据库时,测试工作正常。 发生了什么事?