Visual Studio дозволяє опробовувати приватні методи через автоматично створений клас доступу. Я написав тест приватного методу, який збирається успішно, але він не працює під час виконання. Досить мінімальна версія коду і тесту:
//in project MyProj
class TypeA
{
private List<TypeB> myList = new List<TypeB>();
private class TypeB
{
public TypeB()
{
}
}
public TypeA()
{
}
private void MyFunc()
{
//processing of myList that changes state of instance
}
}
//in project TestMyProj
public void MyFuncTest()
{
TypeA_Accessor target = new TypeA_Accessor();
//following line is the one that throws exception
target.myList.Add(new TypeA_Accessor.TypeB());
target.MyFunc();
//check changed state of target
}
Помилка виконання:
Object of type System.Collections.Generic.List`1[MyProj.TypeA.TypeA_Accessor+TypeB]' cannot be converted to type 'System.Collections.Generic.List`1[MyProj.TypeA.TypeA+TypeB]'.
Відповідно до intellisense - і, отже, я думаю, компілятор - ціль типу TypeA_Accessor. Але під час виконання він має тип TypeA, а значить, додавати список не вдається.
Чи є якийсь спосіб я зупинити цю помилку? Або, можливо, більш імовірно, які поради мають інші люди (я прогнозую, що, можливо, "не перевіряйте приватні методи" та "не мають одиничних тестів, що маніпулюють станом об'єктів").