我有一个对象,需要在同一类的构造函数中的参数:如何单元测试与递归对象
public class Person {
private Person theParent;
private string theName;
public Person(string aName, Person aParent)
{
if(aParent == null)
{
thrown new ArgumentNullException("aParent");
}
theParent = aParent;
theName = aName;
}
}
在我的单元测试我要创建一个新的Person
对象,但构造需要传递另一个Person
对象。我通过从数据库中传入Person
对象(使用NHibernate及其所有的魔法)*来克服此问题。我不想将数据库访问绑定到此测试中,因为它不测试任何数据库功能。我应该嘲笑父对象(我在其他一些测试中使用Rhino Mocks)还是有更好的方法来处理这个问题?
*保证在数据库中总是有一条记录可以检索到父对象。
是的,有一个顶层节点是应用程序在正常使用期间从数据库中检索到的节点。所有其他节点都要求提供父代。出于完整性原因,Null不是允许的父级。 – brainimus 2011-05-10 21:45:57
我假设'Person'类比你的代码显示更高级,但是顶层节点的状态是否是你的测试不可或缺的一部分?如果不是的话,你很可能会用一个简单的模拟对象获得好的结果。 如果数据库中的实际对象不过*是测试的积分,这很可能是集成测试,您应该将它与单元测试分开,然后继续从数据库读取数据。 – 2011-05-10 21:49:05
啊,在你编辑之后,我会建议一个单元测试的模拟对象。 – 2011-05-10 22:02:52