【发布时间】:2009-05-27 22:38:58
【问题描述】:
我正在尝试测试一个名为 AddItem 的 Order 实体方法,并且我正在尝试确保无法添加重复的项目。下面是一些示例代码:
[Test]
public void ItemCannotBeAddedTwiceToOrder()
{
Order o = new Order();
Item i = new Item("Bike");
o.AddItem(i);
o.AddItem(i);
Assert.AreEqual(o.ItemCount, 1, "A duplicate item was added.");
}
public void AddItem(Item newItem)
{
if(!CheckForDuplicateItem(newItem))
_items.Add(newItem);
}
public bool CheckForDuplicateItem(Item newItem)
{
foreach(Item i in _items)
{
if(i.Id == newItem.Id)
return true;
}
return false;
}
所以这是我的问题:如何在测试方法中设置新项目的私有设置器 ID,以便 CheckForDuplicateItem 方法可以工作?我想我不想因为良好的编码实践而公开该成员。我只是愚蠢并且需要使实体 Item 具有公共 Id 设置器吗?还是我需要使用反射?谢谢
注意 - 我使用 NHibernate 进行持久化
【问题讨论】:
标签: c# unit-testing tdd