DDD简明入门之道 - 开篇 (3)

上面代码的逻辑是否与我们预期的一致,该如何验证?这里我们通过单元测试的方式来进行校验,且看我们是如何测试的吧。

[TestClass] public class OrderTest { /// <summary> /// 订单创建逻辑测试 /// </summary> [TestMethod] public void CreateOrderTest() { Address address = new Address(); address.FullName = "张三"; address.FullAddress = "广东省深圳市福田区xxx街道888号"; address.Tel = "13800138000"; List<SaleSkuInfo> saleSkuInfos = new List<SaleSkuInfo>(); saleSkuInfos.Add(new SaleSkuInfo(1138,2)); saleSkuInfos.Add(new SaleSkuInfo(1139, 3)); //商品总金额大于100分支 Order order = Order.Create("181027887609", address, saleSkuInfos.ToArray()); Assert.AreEqual(OrderStatus.PendingPayment, order.Status); Assert.AreEqual(2, order.Lines.Count); Assert.AreEqual(13300, order.DueAmount); //商品总金额小于100分支 Order order1 = Order.Create("181027887610", address, new SaleSkuInfo[]{ new SaleSkuInfo(1140, 3)}); Assert.AreEqual(OrderStatus.PendingPayment, order1.Status); Assert.AreEqual(1, order1.Lines.Count); Assert.AreEqual(8m, order1.ShippingFee); Assert.AreEqual(14, order1.DueAmount); } /// <summary> /// 订单支付逻辑测试 /// </summary> [TestMethod] public void PayOrderTest() { Address address = new Address(); address.FullName = "张三"; address.FullAddress = "广东省深圳市福田区xxx街道888号"; address.Tel = "13800138000"; List<SaleSkuInfo> saleSkuInfos = new List<SaleSkuInfo>(); saleSkuInfos.Add(new SaleSkuInfo(1138, 2)); saleSkuInfos.Add(new SaleSkuInfo(1139, 3)); //商品总金额大于100分支 Order order = Order.Create("181027887609", address, saleSkuInfos.ToArray()); Assert.AreEqual(OrderStatus.PendingPayment, order.Status); Assert.AreEqual(2, order.Lines.Count); Assert.AreEqual(13300, order.DueAmount); //部分支付分支 order.Pay(5000); Assert.AreEqual(5000m, order.ActAmount); Assert.AreEqual(OrderStatus.PendingPayment, order.Status); //部分支付分支 order.Pay(1000); Assert.AreEqual(6000m, order.ActAmount); Assert.AreEqual(OrderStatus.PendingPayment, order.Status); //全部支付分支 order.Pay(7300); Assert.AreEqual(13300m, order.ActAmount); Assert.AreEqual(OrderStatus.PendingShipment, order.Status); } }

本文地址:https://www.cnblogs.com/huangzelin/p/9861439.html ,转载请申明出处。

DDD简明入门之道 - 开篇

结语

到这里,不知道大家注意没有,上面的编码过程我们没有提到任何的数据库设计与存储之类的问题。我们一心都在奔着分析业务,设计模型和实现业务处理逻辑来编码,DDD的设计上有个原则叫忘掉数据库。

在我看来我们的大多数应用程序的运行过程是这样的:

接收用户输入

程序内存组装业务对象

将对象持久化到存储设备(数据库等)

当然还有另外一种是:

接收用户输入

从持久化设备读取数据(数据库等)

程序根据读取的数据内存组装业务对象

将对象返回调用端

==从上面的分析来看内存中领域对象组装过程是最核心的,因其业务千变万化,没法用代码做到通用处理。而数据的持久化相对来说没啥具体业务逻辑,代码上的通用也比较容易。所以,我们可以说DDD方式编程的项目,领域模型设计的合理就意味着这个项目已经成功大半了。==


最后,感谢各位看官听我唠叨了这么久,有问题请给我留言。谢谢

查看源码请移步到:https://github.com/hzl091/NewSale

支付宝打赏   微信打赏  

DDD简明入门之道 - 开篇

 

DDD简明入门之道 - 开篇

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpywgp.html