Сценарий: У меня есть два перечисления, одно с именем Area, а другое с именем Permission, они используются для настройки рабочего разрешения.Я перебираю их и в конечном итоге получаю политики с именем, структурированным как AreaPermission.Затем у меня есть отдельный класс, полный строковых констант, которые используются в атрибуте auth на контроллере [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);
}
}
Есть предложения о том, что я что-то упустил?