2009-10-08 41 views
5

Tôi gặp sự cố khi sử dụng thư viện Moq để giả lập một Enum trong dự án của tôi. Tôi đang cố gắng để kiểm tra một lớp học và một trong những phương pháp chấp nhận một ENum. Có cách nào để làm điều này không?Cách sử dụng thư viện MOQ để giả lập ENum

Đây là Enum Tôi cố gắng để nhạo báng:

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

Đây là mã tôi đang cố gắng sử dụng để tạo ra các mô hình:

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

Đây là lỗi tôi nhận được:

System.ArgumentException: Invalid thiết lập trên thành viên không thể ghi đè: x => x.HasPermis sion (It.IsAny(), It.IsAny())

Tôi cũng đã cố gắng:

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

Bất kỳ trợ giúp sẽ được đánh giá cao ...

Trả lời

3

Lỗi này có nghĩa rằng bạn HasPermission phương pháp trên PermissionService phải là ảo, như vậy:

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

Cảm ơn, điều này đã làm việc !! Hóa ra ENUM chỉ là một ... – Pat

Các vấn đề liên quan