#c# #unit-testing
Вопрос:
У меня есть служба проверки с методом проверки основного объекта. Затем у меня есть отдельные методы для проверки различных свойств объекта. Если какая — либо проверка завершается неудачно, выдается сообщение об ошибке.
public void ValidateObject(Object object, TestEnum enum, bool required)
{
if(enum == TestEnum.A)
{
ValidateObjectPropertyA(object.PropertyA, required);
ValidateObjectPropertyB(object.PropertyB, required);
//Other Calls to Validation Methods
}
else
{
if(enum == TestEnum.C)
{
required = false;
}
ValidateObjectPropertyC(object.PropertyC, required);
//Other Calls to Validation Methods
}
}
public void ValidateObjectPropertyA(PropertyA propertyA, bool required)
{
if(propertyA == null amp;amp; required)
{
throw Exception...........
}
if(other logic)
{
throw Exception...........
}
}
Я провел модульное тестирование методов, которые проверяют свойства (ValidateObjectPropertyA/B/C и т. Д.), И теперь я не уверен в том, как лучше всего провести модульное тестирование основного метода «ValidateObject».
До сих пор мои варианты, похоже, либо:
A) Имитируйте вызовы методов «ValidateObjectProperty» и убедитесь, что правильные значения передаются в
Положительный результат: я могу проверить, что методы вызываются с правильными значениями.
Отрицательно: я не могу проверить, что происходит ожидаемый результат, поэтому, если поведение изменилось в базовом методе ValidateObjectProperty, издевательский тест не провалится.
или
Б) Добавьте тесты для метода ValidateObject, которые вызывают методы «ValidateObjectProperty», и проверьте несколько ожидаемых случаев сбоя для каждого свойства.
Положительный результат: я могу гарантировать, что произойдет ожидаемая ошибка/успех
Отрицательно: я, по сути, дублирую тесты, которые уже были написаны для отдельных методов ValidateObjectProperty
Какой подход (или какой другой подход), по вашему мнению, наиболее подходит для этого сценария и почему?