2009-10-08 101 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

相关问题