控制器操作已经使用System.Security.Permissions.CodeAccessSecurityAttribute的自定义实现进行了修饰,如下所示。如何在单元测试控制器操作方法时为属性注入依赖项。通过在其中直接使用ConfigurationManager类,测试变得更加困难。安全属性的代码由客户提供,我们不打算更改它。是否有任何其他方式来注入依赖项,以便我可以在不更改自定义CodeAccessSecurityAttribute的情况下对控制器方法进行单元测试。
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public sealed class CustomSecurityAttribute : CodeAccessSecurityAttribute
{
public CustomSecurityAttribute(SecurityAction action)
: base(action)
{
}
public string Roles { get; set; }
public override IPermission CreatePermission()
{
ConfigurationManager.GetSection("procedureList") as NameValueCollection
result = new PrincipalPermission(null, roles[0]);
return result;
}
}