我在SO有一个问题,询问如何将中间层连接到数据集。
我提出了一个答案,显示了我的想法,但我对紧密耦合不满意。我刚刚开始进行测试,并发现它对我的代码来说是一个很好的目标。
这段代码如何解耦以进行单元测试?
谢谢你,
基思
我在SO有一个问题,询问如何将中间层连接到数据集。
我提出了一个答案,显示了我的想法,但我对紧密耦合不满意。我刚刚开始进行测试,并发现它对我的代码来说是一个很好的目标。
这段代码如何解耦以进行单元测试?
谢谢你,
基思
海事组织;数据集是邪恶的。它们是并且应该只用作离线数据库。仅此而已,IMO。但是,您在数据访问层 (DAL) 中所做的事情不应真正影响您的业务层 (BL)。我只是在它们之间使用对象(使用接口)(IList),然后使用接口来定义您的 DAL(IRepository),并且您可以模拟该接口以返回您在 BL 中需要的任何内容以进行单元测试。单元测试数据集是另一种野兽,从未尝试过,我希望永远不必......也许内存数据库是你最好的选择......
哦,为了模拟,我使用 RhinoMock 取得了一些成功。我还鼓励您查看 IoC ( http://www.castleproject.org/ )。
你试过Spring.net吗?它将使您的代码更干净且耦合更少。它还提供了有用的类来进行集成测试。
这取决于您要测试的内容:
这里有一个建议:
一个订单包含它的所有子订单。这是一个集合体,一个整体。您从存储库中获得包含详细信息的订单:
var order = repository.GetOrderBy(id);
存储库从数据库中获取数据:
var dataset = orderDatabase.GetOrderAndDetailsBy(id);
存储库可以使用构建器来创建订单:
var order = orderBuilder.CreateOrderAndDetailsFrom(dataset);
您必须按如下方式创建存储库:
var repository = new OrderRepository(orderDatabase, orderBuilder);
现在,您可以根据要测试的内容创建带有假合作者的存储库。
如果您有实体对象,则可以使用模拟来对中间层进行单元测试。