У меня есть собственный настраиваемый атрибут авторизации, и я пытаюсь проверить методы контроллера, чтобы определить, имеют ли они правильные роли. Теперь мой пользовательский тег авторизации содержит код базы данных.
Способы, которыми я занимаюсь, похоже, не работают, так как обнаруженные мной средства отражения просто не передают аргументов, поэтому мой конструктор по умолчанию в атрибуте Authorize получает удар, создавая новый объект уровня сервиса, который создает объект репозитория (убивает юнит-тест).
var indexAction = typeof(Controller).GetMethod(method);
var authorizeAttributes = indexAction.GetCustomAttributes(typeof(AuthorizeAttribute), true);
//Assert
Assert.That(authorizeAttributes.Length > 0, Is.True);
foreach (AuthorizeAttribute att in authorizeAttributes)
{
Assert.That(att.Roles, Is.EqualTo(roles));
}
Конструкторы моего AutorizeAttribute
public MyAuthorize()
{
authorize = new ServiceLayer();
}
public MyAuthorize(IServicelayer layer)
{
authorize = layer;
}
Отражение продолжает вызывать мой конструктор по умолчанию. Как я могу перейти в слой фальшивого сервиса или что-то в этом роде?
Спасибо