Как создать универсальный валидатор свойств для веб-API?
В настоящее время я тестирую API и хочу создать универсальный валидатор, который будет проверять свойства json и его значения для модели.
Например у меня есть следующий Json ответ от сервера
{ "id" : 1, "name" : "John", "age" : 30 } //I created a Model DTO for this to compare it to json I get back. public class UserDTO { public int id { get; set; } public string name{ get; set; } public int age { get; set; } public static UserDTO Userinfo() { return new UserDTO() { id = 1, name = "John", age = 30 }; } }
Что я уже пробовал:
//Итак, я пытаюсь создать класс, который будет принимать любой класс типа модели, а затем иметь метод validate, где он принимает IRestresponse(используя Restsharp) и преобразует в объекты, получает свойства и значения. Затем сравните это с классом модели.
public class PropertiesValidator<TModel> where TModel : class { public void Validate(IRestResponse response, TModel tmodelObj) { var content = response.Content; object acutalObjects = JsonConvert.DeserializeObject(content); //Getting Type of Generic class Model properties PropertyInfo[] properties = tmodelObj.GetType().GetProperties(); foreach (PropertyInfo modelProperty in properties) { PropertyInfo currentExpectedProperty = tmodelObj.GetType().GetProperty(modelProperty.Name); string exceptionMessage = string.Format("The property {0} of class {1} was not as expected.", modelProperty.Name, modelProperty.DeclaringType.Name); Assert.AreEqual(currentExpectedProperty.GetValue(tmodelObj, null), modelProperty.GetValue(acutalObjects, null), exceptionMessage); } }