2009-10-08 28 views
5

ile karşılaştırmak için MOQ kütüphanesi nasıl kullanılır Projemde bir Enum ile alay etmek için Moq kütüphanesini kullanarak bir sorun yaşıyorum. Bir sınıfı test etmeye çalışıyorum ve yöntemlerden biri bir ENUM kabul ediyor. Bunu yapmanın bir yolu var mı? Sahte İşte Bir ENUM

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

Ben oluşturmak için kullanmaya çalışıyorum kodu:

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

Bu hatadır Aldığım: Burada

ben alay çalışıyorum Enum olduğunu

System.ArgumentException: olmayan bir geçersiz kılınabilir üyesinde Geçersiz kurulumu: x => x.HasPermis sion (It.IsAny(), It.IsAny())

Ben de denedim:

Herhangi bir yardım mutluluk duyacağız

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

cevap

3

Bu hata HasPermission demektir PermissionService yöntemi sanal olmalıdır, şu şekilde olmalıdır:

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

Teşekkürler, bu işe yaradı! ENUM, sadece kırmızı bir ringa balığı ... – Pat