Как использовать библиотеку MOQ для макета ENum - PullRequest
5 голосов
/ 09 октября 2009

У меня проблема с использованием библиотеки Moq для макета Enum в моем проекте. Я пытаюсь проверить класс, и один из методов принимает ENum. Есть какой-либо способ сделать это?

Вот Enum, который я пытаюсь высмеять:

public enum PermissionType
{
   Create = 0,
   Read = 1,
   Update = 2,
   Delete = 3,
}

Вот код, который я пытаюсь использовать для создания макета:

 private static Mock<PermissionService> GetMockPermissionService(bool hasPermissions)
 {
    var mockPermissionService = new Mock<PermissionService>();

    mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
                      **It.IsAny<PermissionType>()**)).Returns(hasPermissions);

    return mockPermissionService;
 }

Это ошибка, которую я получаю:

System.ArgumentException: неверный настройка на не перезаписываемый элемент: x => x.HasPermission (It.IsAny (), It.IsAny ())

Я также пробовал:

mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
                          **It.IsAny<int>()**)).Returns(hasPermissions);

mockPermissionService.Setup(x => x.HasPermission(It.IsAny<string>(), 
                          **PermissionType.Read**)).Returns(hasPermissions);

Буду признателен за любую помощь ...

1 Ответ

3 голосов
/ 09 октября 2009

Эта ошибка означает, что ваш метод HasPermission на PermissionService должен быть виртуальным, например:

public virtual bool HasPermission(string name, PermissionType type)
{
   // logic
}
...