У меня есть структура, которая выглядит примерно так:
abstract class A
{
protected string Identificator { get; set; }
private void DoSomething()
{
// ...
DoSomethingSpecific();
}
protected abstract void DoSomethingSpecific();
}
Из-за сложности мне нужно выполнить модульное тестирование метода DoSomething, чтобы убедиться, что он всегда работает одинаково.Вот почему я создал следующую заглушку.
public class AStub : A
{
protected override void DoSomethingSpecific()
{
// nothing to do
}
}
Я использую класс PrivateObject для доступа к методам и свойствам класса A, являющегося экземпляром класса AStub.Это работало некоторое время, и по какой-то причине теперь происходит сбой, когда я пытаюсь получить доступ к свойству или методу.
следующий код для тестирования:
var sut = new CommonIodAdapterImpl();
var accessor = new PrivateObject(sut);
accessor.SetProperty("Identificator", "blablub");
accessor.Invoke("DoSomething", null);
// assert...
Исключение, которое выдаетсяMissingMethodException говорит мне, что свойство или метод не был найден.Но когда я отлаживаю и проверяю иерархию, кажется, что все правильно, включая орфографию.
Спасибо за вашу помощь.