Если вы хотите провести модульное тестирование (тестирование в изоляции), вам нужно
- разрешение на проверку логики, и вы должны
- проверка того, что ваше контрольное устройство (то есть MVVM) использует логику разрешений.
Проверка SecurityManager для разрешения Logic
вы можете извлекать allowLogic для собственного класса с помощью методов
public class SecurityManager
{
bool IsAllowedToPrint(User user);
bool IsAllowedToAdminister(User user);
}
тогда вы пишете модульные тесты
User user = CreateAdimistrator();
Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user));
Contrologic (т.е. MVVM) использует логику разрешений
создать mock-SecurityManager, который всегда разрешает / запрещает работу.
и запишите юнит-тесты для контроллера, если он реагирует так, как ожидалось.
var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything();
var mvvm = CreateMvvm(allowEverythingMock );
Assert.IsNotNull(mvvm.GetAdminGui());
Я не уверен, есть ли простой способ создать интеграционный тест, в котором Click-Once-App фактически использует настоящий SecurityManager и результат проверяется.
Обновление после получения дополнительной информации о цели
написать юнит-тесты для контроллера, если он реагирует так, как ожидалось.
var controller = CreateCreate(Permission.Low);
try
{
// File io is not allowed with low permissions
controller.SaveTextAsFile("HellowWorld", @"c:\temp\UnittestResult.txt");
Assert.Fail("The Controller should have forbidden this");
} catch(PermissionException pex) {
// everything is ok. This specific exception was expected.
}