有没有办法管理事务范围以确保在进程中调用提交,完成或回滚操作?
鉴于此功能:
public void DoSomething(int param)
{
using (TransactionScope transactionScope = new TransactionScope())
{
factory.DoSomething(param);
factory.DoSomethingElse(param);
transactionScope.Complete();
}
}
有没有办法通过IDisposable接口调用Verify函数?它似乎只包含一个Dispose函数,我想测试Commit或Rollback。
谢谢
答案 0 :(得分:5)
TransactionScope是密封类,仅从IDisposable
接口派生。
在我考虑的时候,你需要为TransactionScope
和接口创建自己的包装类,这样你就可以使用并模拟它。
class TransScopeWrapper : ITransScope, IDisposable
{
private TransactionScope scope;
public TransScopeWrapper()
{
scope = new TransactionScope();
}
public void Dispose()
{
scope.Dispose();
}
public void Complete()
{
scope.Complete();
}
public void Rollback()
{
...
}
}
internal interface ITransScope
{
void Complete();
void Rollback();
}
你还需要以某种方式注入ITransScope
模拟。我会按照以下方式进行操作
public void DoSomething(int param)
{
using (TransScopeWrapper transactionScope = new TransScopeWrapper ())
{
DoSomething(param, transactionScope);
}
}
internal void DoSomething(int param, ITransScope transaction)
{
factory.DoSomething(param);
factory.DoSomethingElse(param);
transaction.Complete();
}
所以现在你可以测试模仿DoSomething(int param, ITransScope transaction)
的{{1}}方法。