方案::我有两个枚举,一个称为Area,另一个称为Permission,它们用于设置操作授权。我遍历它们,最后得到名称结构类似于AreaPermission的策略。然后,我有一个充满字符串常量的单独类,该类在控制器[Authorize(Policy = MyClass.PolicyName)]
所需的结果:我想要一个单元测试,该单元测试将遍历常量类上的所有属性,并调用获取用于授权策略DI服务注册的所有策略名称的方法。这样,将来,如果开发人员添加了权限值或区域值,那么如果尚未创建字符串常量,则将进行单元测试。
当前结果:我目前没有数据结果:
System.InvalidOperationException : No data found for OperationPoliciesTest.PoliciesExistInRegistrationMethod
Exception doesn't have a stacktrace
TestData类:
public class OperationalPoliciesTestData : IEnumerable<object[]>
{
public IEnumerator<object[]> GetEnumerator()
{
var t = typeof(OperationPolicies);
var props = t.GetProperties();
foreach (var prop in props)
{
yield return new object[] {prop.Name};
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
测试类:
public class OperationPoliciesTest
{
private readonly List<string> _registeredPolicies;
public OperationPoliciesTest()
{
var policies =
OperationalRequirementRegister.GetAllOperationalPolicyNames();
_registeredPolicies = new List<string>(policies.Keys);
}
[Theory]
[ClassData(typeof(OperationalPoliciesTestData))]
public void PoliciesExistInRegistrationMethod(string policyName)
{
Assert.NotEmpty(_registeredPolicies);
Assert.NotNull(policyName);
Assert.Contains(policyName, _registeredPolicies);
}
}
关于我是否缺少某些东西的建议吗?