2009-10-08 236 views
5

我在使用Moq庫模擬我的項目中的Enum時遇到了問題。我試圖測試一個類,其中一種方法接受ENum。有沒有辦法做到這一點?如何使用MOQ庫來模擬ENum

這裏是我試圖嘲弄枚舉:

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

這裏是我想用它來創建代碼的模擬:

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

這是錯誤我收到:

System.ArgumentException:無效 設置非可重寫的構件上:X => x.HasPermis錫永(It.IsAny(),It.IsAny())

我也曾嘗試:

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

任何幫助,將不勝感激......

回答

3

這個錯誤意味着你調用hasPermission方法PermissionService必須是虛擬的,如下所示:

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

謝謝,這工作!原來ENum只是一個紅鯡魚...... – Pat 2009-10-09 15:54:17

相關問題