У меня есть структура, которая выглядит примерно так:
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, указывающее, что свойство или метод не найдены. Но когда я отлаживаю и проверяю иерархию, все кажутся правильными, накладывая орфографию.
Благодарим вас за помощь.
