Модульное тестирование, включено или отключено действие в зависимости от типа пользователя, с использованием Nunit и MoqC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Модульное тестирование, включено или отключено действие в зависимости от типа пользователя, с использованием Nunit и Moq

Сообщение Anonymous »


Я создал действие с помощью ViewActionController в XAF. Включение этого действия из метода OnActivated() в зависимости от типа пользователя.

public VehicleFileAnalyzerController() { ИнициализироватьКомпонент(); TargetObjectType = тип(ABCInfo); { ABCAction = новый (это, «ABCModule», PredefineCategory.Edit) { ТипВыбораЗависимости = ТипВыбораЗависимости.Независимый }; ABC.Execute += ABC_Execute; } } защищенное переопределение void OnActivated() { база.OnActivated(); вар пользователь = SecuritySystem.CurrentUser как OAuthPermissionUser; bool isAdminRole = user.IsAdmin; bool isDealerRole = user.IsDealer; BulkUploadAction.Active.SetItemValue("Активный", (isAdminRole || isDealerRole)); } Мне нужно проверить, что это действие активно только для администратора и дилера, а не для пользователей других типов.

Я создал тест Nunit и попробовал его

[TestCase(true, false, false)] // Администратор [TestCase(false, true, true)] // Только дилер public void Test_ActionEnabledForUserType (bool isAdmin, bool isDealer, bool ожидаемыйEnabled) { // Настраиваем макет приложения и пространство объектов контроллер = новый ABCController(); ockApplication = новый Mock(); ockApplication.CallBase = правда; контроллер.Приложение = макетПриложение.Объект; ABCAction = GetPrivateField(контроллер, «ABC»); ockObjectSpace = новый Mock(); ModuleList ModuleList = новый ModuleList { новый ABCModule() }; варentityStoreMock = новый Mock(); вар objectSpaceProviderMock = новый Mock(); objectSpaceProviderMock.Setup(o => o.EntityStore).Returns(entityStoreMock.Object); ExpressApplicationSetupParameters setupParameters = новые ExpressApplicationSetupParameters (null, objectSpaceProviderMock.Object, новый ControllersManager (), ModuleList); ockApplication.Object.Setup(setupParameters); Ошибка возникает в следующих строках, где я пытаюсь установить пользователя `

varockCurrentUser = новый Mock(); ockCurrentUser.SetupGet(u => u.IsAdministrator).Returns(isAdmin); ockCurrentUser.SetupGet(u => u.IsDealer).Returns(isDealer); Assert.That(expectedEnabled, Is.EqualTo(ABCAction.Active["Active"])); выдает ошибку как неподдерживаемое выражение: u => u.IsAdministrator

Я тоже пытался назначить, как показано ниже

var user = новый OAuthPermissionUser(session); пользователь.IsAdministrator = isAdmin; пользователь.IsDealer = isDealer; Но это не меняет значений свойств.

Класс OAuthPermissionUser приведен ниже
открытый класс OAuthPermissionPolicyUser: PermissionPolicyUser, IObjectSpaceLink, IXafEntityObject, ISecurityUserWithLoginInfo { public OAuthPermissionUser (сеанс сеанса): base (сеанс) { } [PersistentAlias("Роли[Имя == 'Администраторы'].Exists()")] public bool IsAdministrator { получать { администратор = (bool)EvaluateAlias(nameof(IsAdministrator)); возврат администратора; } set => SetPropertyValue(nameof(IsAdministrator), ссылка администратора, значение); } [PersistentAlias("Роли[Имя == 'Дилер'].Exists()")] публичное логическое значение IsDealer { получать { дилер = (bool)EvaluateAlias(nameof(IsDealer)); возврат дилеру; } set => SetPropertyValue(nameof(IsDealer), реферальный дилер, значение); } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»