我想測試一個方法添加的目的是在基類的列表。存根保護列表中基類的單元測試
我的問題是,名單保護,我不能在我的測試安排填充它。因此該列表是空的,我的方法無法在特定索引處添加對象。
我如何做一個存根列表,並沒有使它公衆使用它,而不是真正的基類列表的?
我使用NUnit和起訂量。
Here's一些代碼來模仿我的問題:
public class Person
{
public string Name { get; set; }
readonly List<PhoneNumber> _numbers = new List<PhoneNumber>();
public void AddNumber(PhoneNumber phoneNumber)
{
_numbers.Add(phoneNumber);
}
}
public class PhoneNumber
{
public int Number { get; set; }
}
public class BaseClass
{
protected List<Person> Persons = new List<Person>();
}
public class DerivedClass : BaseClass
{
public void AddNumberToPersons(int index, PhoneNumber phoneNumber)
{
Persons[index].AddNumber(phoneNumber); // <-- Need to test if
// this gets called without errors
}
}
[Test]
public void AddNumberToPersons_WhenAddingNumberToPersons_NumberGetsAddedToList()
{
// I think I need to use a stub list or else the list is empty
// and index is out of range.
// Assert that number is added to the list.
}
它是真正重要的電話號碼是否被添加到人或不?這將如何影響你的課堂行爲?人受到保護,所以你真的不關心它的狀態。您應該關心會影響您班級用戶的變化 –
嗯,您的權利,不是電話號碼是否被添加。 我需要測試的是當我打電話給AddNumberToPersons(int index,PhoneNumber phoneNumber)。 Persons [index] .AddNumber(phoneNumber);得到執行。 但我仍然需要一個存根列表來執行該行而不會引發異常嗎? –
執行'AddNumber'方法會如何影響你的類的行爲?將電話號碼添加到其中一個人後,它的行爲會有所不同? –