我有一个对象,它在构造函数中接受相同类型的参数:
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)还是有更好的方法来解决这个问题?
*保证数据库中总有一条记录可以检索以创建父对象。
答案 0 :(得分:1)
我认为在某些时候你应该到达顶级节点?那么aParent
的正确值是什么?
我的猜测是null
,这意味着Person
是第一行(对你的应用来说意味着什么,也许是Adam或其他什么?)。
答案 1 :(得分:0)
您可以测试递归函数调用的副作用,例如使用计数器字段变量来检查调用次数,将调用参数存储在某种容器中,单元测试可以检查它们等等。当然,你将在发布版本中删除所有这些东西。