Модульное тестирование, включено или отключено действие в зависимости от типа пользователя, с использованием Nunit и Moq ⇐ C#
Модульное тестирование, включено или отключено действие в зависимости от типа пользователя, с использованием Nunit и Moq
Я создал действие с помощью 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), реферальный дилер, значение); } }
Я создал действие с помощью 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), реферальный дилер, значение); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как написать модульный тест для работы после работы с использованием MOQ и NUNIT
Anonymous » » в форуме C# - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как написать модульный тест для работы после работы с использованием MOQ и NUNIT
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Moq.raiseasync приводит к System.NullReferenceException moq.raise работает нормально
Anonymous » » в форуме C# - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-