如何在业务规则属性可访问性时测试业务规则?

问题描述:

这里是捕捉。我有一个名为RegisterDate的业务对象。像往常一样,商业规则说,一旦设定,就不能改变。如何在业务规则属性可访问性时测试业务规则?

我首先想到的是将该字段作为属性实现并将setter定义为受保护的,防止用户在创建对象后使用(并设置)该setter。但经过一段时间后,我让我偷偷摸摸地看到一个财产访问规则中的商业规则。

我的第二个想法是让属性setter公开,在设置时实现一个异常,这使得业务规则非常明确。每当有人试图设置它时,都会出现一个测试用例,希望该属性抛出异常。

嗯,但是这是一个避免行为的样板,为什么不让这个东西受到保护,甚至避免在代码的其他部分滥用?但后来我想知道,如果另一位开发人员意外更改了属性可访问性并将其重新公开,并且业务对象的用户开始使用违反业务规则的此字段,该怎么办?

这种情况的最佳方法是什么?你会如何解决这个问题?

+1

http://stackoverflow.com/questions/1079292/should-i-use-set-once-variables或http://stackoverflow.com/questions/839788/is-there-a-way-设置一个属性一次只在一个c – 2011-02-08 14:42:12

如果你负担得起只能在构造函数中设置它,你可以使字段只读。

public class SomeClass 
{ 
    public SomeClass(DateTime regDate) 
    { 
    registerDate = regDate; 
    } 

    public DateTime RegisterDate { get { return registerDate; } } 

    private readonly DateTime registerDate; 
}