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

时间:2011-02-08 14:35:03

标签: .net entity-framework testing properties business-rules

这是捕获。我有一个业务对象,其中包含一个名为RegisterDate的字段。像往常一样的业务规则说,一旦设置,就无法改变。

我首先考虑将此字段实现为属性并将setter定义为protected,从而阻止用户在创建对象后使用(和设置)它。但是在思考了一段时间后,我让我在属性可访问性规则中隐藏了业务规则。

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

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

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

1 个答案:

答案 0 :(得分:3)

如果您只能在构造函数中设置它,则可以将该字段设为只读。

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

  public DateTime RegisterDate { get { return registerDate; } }

  private readonly DateTime registerDate;
}
相关问题