2009-10-08 11 views
5

Mam problem z używaniem biblioteki Moq do wyśmiewania Enum w moim projekcie. Próbuję przetestować klasę i jedną z metod akceptuje ENUM. Czy jest jakiś sposób to zrobić?Jak używać biblioteki MOQ do kpiny z ENUM

Oto Enum Próbuję mock:

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

Oto kod próbuję użyć do tworzenia makiety:

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; 
} 

Jest to błąd otrzymuję:

System.ArgumentException Nieprawidłowy konfiguracja na nie przeciążać członka x => x.HasPermis Sion (It.IsAny(), It.IsAny())

Próbowałem również:

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); 

Każda pomoc będzie mile widziane ...

Odpowiedz

3

Ten błąd oznacza, że ​​HasPermission Metoda na PermissionService musi być wirtualna, tak jak:

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

Dzięki, działało !! Okazało się, że ENUM był po prostu czerwoną śledzia ... – Pat