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