2009-10-08 7 views
5

J'ai un problème avec la bibliothèque Moq pour simuler un Enum dans mon projet. J'essaie de tester une classe et l'une des méthodes accepte un ENum. Est-ce qu'il y a un moyen de faire ça?Comment utiliser la bibliothèque MOQ pour simuler un ENum

Voici le Enum que je suis en train de se moquer:

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

Voici le code que je suis en train d'utiliser pour créer la maquette:

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

C'est l'erreur que je reçois:

System.ArgumentException: Invalid configuration sur un élément non-substituable: x = > x.HasPermis sion (It.IsAny(), It.IsAny())

J'ai aussi essayé:

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

Toute aide serait appréciée ...

Répondre

3

Cette erreur signifie que votre HasPermission La méthode sur PermissionService doit être virtuelle, comme ceci:

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

Merci, cela a fonctionné !! Il s'avère que l'ENum était juste un rouge-hareng ... – Pat

Questions connexes