Как утверждать, что сервер API содержит свойство json и значения, которые совпадают с сравниваемой моделью?
Я пытаюсь проверить, содержит ли API то же свойство и значение модели, с которым она сравнивается. У меня есть метод проверки, который позволяет мне десериализовать ответ с сервера. У меня также есть DTO, который является моделью. Затем, используя Рефекцию, я получаю свойство и значения. Но в строке Assert он терпит неудачу, потому что сервер API возвращает массив, и в этом Arrray содержит модель, с которой я пытаюсь ее сравнить. Я знаю, что могу использовать Assert.equal, потому что сервер может возвращать и другую информацию.. Как я могу использовать contains или какой-то другой способ проверить это?
public class PropertiesValidator<TModel> { public static void Validate(IRestResponse response, TModel modelObj, params string[] propertiesNotToCompare) { var content = response.Content; object acutalObjects = JsonConvert.DeserializeObject(content); PropertyInfo[] properties = acutalObjects.GetType().GetProperties(); foreach (PropertyInfo currentRealProperty in properties) { if (!propertiesNotToCompare.Contains(currentRealProperty.Name)) { PropertyInfo currentExpectedProperty = modelObj.GetType().GetProperty(currentRealProperty.Name); string exceptionMessage = string.Format("The property {0} of class {1} was not as expected.", currentRealProperty.Name, currentRealProperty.DeclaringType.Name); Assert.AreEqual(currentExpectedProperty.GetValue(modelObj, null), currentRealProperty.GetValue(acutalObjects, null), exceptionMessage); } } } } //Here is my Model DTO class public class TagDTO { public long id { get; set; } public string name{ get; set; } public long type{ get; set; } public object query{ get; set; } public object parentId { get; set; } public object ownerId { get; set; } public object activeDirectoryId { get; set; } public bool hasChildren { get; set; } public static TagDTO actualObject() { return new TagDTO() { id = 5, name = "NotTag", type = 0, query = null, parentId = null, ownerId = null, activeDirectoryId = null, hasChildren = false }; } } //Here is the Json response from the Server. [ { "id": 5, "name": "NoTag", "type": 0, "query": null, "parentId": null, "ownerId": null, "activeDirectoryId": null, "hasChildren": false }, { "id": 6, "name": "MyTag", "type": 0, "query": null, "parentId": null, "ownerId": "eccf46f3-348b-422e-8789-c163b5953b41", "activeDirectoryId": null, "hasChildren": false } ]
Что я уже пробовал:
Не уверен.. может быть, мы сможем использовать CollectionAssert.Содержит()