Los*_*WPF 4 c# tdd nunit unit-testing domain-driven-design
我的目标是创建一个基于纯域驱动设计的系统.据我所知,这意味着我的域对象应该有行为而不是形状.也就是说,他们不应该有任何吸气剂或其他访问者.
与此同时,我正在尝试遵循TDD流程,并遇到了我正在尝试编写测试的绊脚石.
[Test]
public class new_purchase_order_should_have_purchase_ordernumber_of_1
{
PurchaseOrder po = PurchaseOrder.CreatePurchaseOrder()
Assert.AreEqual(1,po.PurchaseOrderNumber);
}
public class PurchaseOrder
{
private int _purchaseOrderNumber;
static CreatePurchaseOrder()
{
_purchaseOrderNumber = SomeWayOfGettingAPONumber()
//other initialisation
}
public int PurchaseOrderNumber {get { return _purchaseOrderNumber;}
}
Run Code Online (Sandbox Code Playgroud)
如果不允许使用getter,如何验证CreatePurchaseOrder()方法是否正确运行并将值设置为1.
在尝试实现这个设计时,这对我来说是一个很大的概念障碍,因此任何建议都非常有用.
谢谢
为什么域对象不能拥有属性?你谈到的纯粹行为,它只是静态方法,它们与Domain Objects无关.
在维基百科告诉我们:
业务对象本身通常不执行任何操作,但包含一组实例变量或属性(也称为属性)以及与其他业务对象的关联,编织表示业务关系的对象映射.
业务对象没有行为的域模型称为Anemic Domain Model.
因此,转向,域对象应该具有属性和(在大多数情况下)行为.
马丁福勒说:
域模型 - 包含行为和数据的域的对象模型