2009-10-08 18 views
5

Sto riscontrando un problema utilizzando la libreria Moq per deridere un Enum all'interno del mio progetto. Sto provando a testare una classe e uno dei metodi accetta un ENUM. C'è un modo per fare questo?Come utilizzare la libreria MOQ per deridere un ENum

Ecco l'Enum che sto cercando di prendere in giro:

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

Ecco il codice che sto cercando di utilizzare per creare il mock:

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

Questo è l'errore che ricevo:

System.ArgumentException: Invalid configurazione su un membro non superabile: x => x.HasPermis Sion (It.IsAny(), It.IsAny())

Ho anche provato:

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

Qualsiasi aiuto sarebbe apprezzato ...

risposta

3

Questo errore significa che il vostro hasPermission metodo su PermissionService deve essere virtuale, in questo modo:

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

Grazie, ha funzionato !! Risulta che l'ENUM era solo un'aringa rossa ... – Pat

Problemi correlati