与嵌套TransactionScope的集成测试

时间:2019-05-23 14:07:12

标签: c# integration-testing dbcontext transactionscope

我有CustomerService类,该类复制客户对象并执行存储过程以将该副本存储在数据库中。我需要测试此服务。

该服务正在使用TransactionScope,因为它位于业务层之内,不应依赖于DbContext。还将IsolationLevel设置为repeatableRead,因为为了创建客户对象,它调用customerRepository来从原始客户那里检索信息,该信息在此操作中不应更改。

foo

我还想测试先前的方法,并且必须将方法调用包装到事务中。因此,我创建了另一个具有相同IsolationLevel的TransactionScope,它似乎可以正常工作,除非对数据库的最后一次读取调用无限等待。

public class CustomerService
{
 public void Handle(CopyCustomer cmd)
        {

            using (var transaction = new TransactionScope(TransactionScopeOption.Required,
                new TransactionOptions { IsolationLevel = IsolationLevel.RepeatableRead }))
            {
        // Mapping newCustomer from CopyCustomer command. Includes Reading from database ...

                // Use custom stored procedure !
                _customerRepository.Save(newCustomer)
                transaction.Complete();
            }
        }
}

也许我做错了,但是我该如何解决这个问题呢?

0 个答案:

没有答案