Вы можете проверить валидацию отдельно.Хотя невозможно выполнить проверку при непосредственном запуске служебного кода, в блоке приложения проверки есть два метода для проверки вашего кода (о котором я знаю).
- Использование ValidatorFactory для созданиявалидатор для вашего типа ввода и утверждают, что результаты валидации содержат ожидаемые ошибки.
- Создание экземпляра Validator напрямую и тестирование его с различными входными данными.
На практике я получаю комбинациюиз двух методов.Я использую первый метод для проверки ошибок валидации сложных типов ввода.В качестве примера:
[DataContract]
public class Product
{
[DataMember, NotNullValidator]
public string Name { get; set; }
[DataMember, RangeValidator(0.0, RangeBoundaryType.Exclusive,
double.MaxValue, RangeBoundaryType.Ignore,
ErrorMessage = "The value cannot be less than 0.")]
public double Price { get; set; }
}
[TestMethod]
public void InvalidProduct_ReturnsValidationErrors()
{
Product request = new Product()
{
Price = -10.0
};
var validatorFactory = EnterpriseLibraryContainer.Current
.GetInstance<ValidatorFactory>();
var validator = validatorFactory.CreateValidator<Product>();
var results = validator.Validate(request);
Assert.IsTrue(results.Any(vr => vr.Key == "Name"
&& vr.Message == "The value cannot be null."));
Assert.IsTrue(results.Any(vr => vr.Key == "Price"
&& vr.Message == "The value cannot be less than 0."));
}
Для метода 2 у меня будут тесты, которые охватывают мои сценарии использования для созданных мной Валидаторов.В качестве другого примера:
[TestMethod]
public void XmlStringValidator_ReturnsErrors_OnInvalidInput()
{
var validator = new XmlStringValidator();
var results = validator.Validate("Your input goes here");
Assert.IsTrue(results.Any(vr => vr.Key == "[KeyNameInValidator]" &&
vr.Message == "[Expected error message based on input]"));
}
Метод 2 позволит вам создать столько тестовых сценариев, сколько вы захотите для своего XmlStringValidator.
Более подробную информацию об этих методах можно найти в этой статье: Глава 6 - Изгнание проверки правильности