Я пытаюсь написать несколько тестов для приложения MVC, которое мы разрабатываем.У нас есть класс BaseController, который содержит следующее:
public class BaseController : Controller
{
protected string UserRole { get; private set; }
Затем у нас есть контроллер, который наследуется от BaseController:
public class CustomFieldController : BaseController
Я создал частные средства доступа для обоих классов (простовозродил их несколько минут назад).В одном из моих модульных тестов для CustomFieldController я хочу установить UserRole, поэтому у меня есть следующий код:
CustomFieldController controller = new CustomFieldController();
CustomFieldController_Accessor accessor = new CustomFieldController_Accessor(
new PrivateObject( controller, new PrivateType( typeof( BaseController ) ) ) );
accessor.UserRole = "OTHER";
Каждый раз, когда я пытаюсь запустить этот тест, в последней строке выдается исключение:
Указанный элемент (CustomFieldEdit) не найден.Возможно, вам потребуется восстановить свой частный метод доступа, или член может быть закрытым и определенным для базового класса.Если последнее верно, вам нужно передать тип, который определяет член, в конструктор PrivateObject.
Насколько я могу судить, я сделал то, что он говорит.Мало того, что я недавно заново сгенерировал приватный метод доступа, но я передаю тип, который определяет член, в конструктор PrivateObject.
Есть мысли о том, что мне здесь не хватает?Я знаю, что могу заставить его работать, убрав «private» из установщика свойств, но я бы предпочел этого не делать, если я могу избежать этого (не хочу, чтобы разработчики подкласса думали, что они могут ввести значение в это свойство).