RestAssured: Как проверить тело ответа с помощью схемы JSON, если тело ответа имеет дополнительные значения? - PullRequest
0 голосов
/ 21 октября 2019

Я проверяю схему JSON, используя matchesJsonSchemaInClasspath. Это нормально работает, если тело ответа имеет те же значения, которые определены в schema.json файле.
Если тело ответа имеет EXTRA переменную / значение, которое не определено в схеме json, то оно не завершится ошибкой. Как выполнить этот контрольный пример?

FOR EXAMPLE:
Ниже приведено тело ответа с предопределенной схемой JSON.

 {  
    "employee": {  
        "name":       "sonoo",   
        "salary":      56000,   
        "married":    true  
    }  
}  

Если тело ответа дает дополнительные значения, такие как адрес электронной почты / телефон, то оно все еще проходит. Мне нужно, чтобы он потерпел неудачу. Это мой тестовый случай, если тело ответа возвращает дополнительное значение. Как проверить этот контрольный пример?

{  
    "employee": {  
        "name":       "Mike",   
        "salary":      56000,  
        "Phone": "+XXX",
        "email": "test@gmail.com",
        "married":    true  
    }  
}  

1 Ответ

2 голосов
/ 22 октября 2019

Создайте класс POJO, представляющий json

public class Employee {
 private String name;
 private float salary;
 private boolean married;


 // Getter Methods 

 public String getName() {
  return name;
 }

 public float getSalary() {
  return salary;
 }

 public boolean getMarried() {
  return married;
 }

 // Setter Methods 

 public void setName(String name) {
  this.name = name;
 }

 public void setSalary(float salary) {
  this.salary = salary;
 }

 public void setMarried(boolean married) {
  this.married = married;
 }
}

Используйте следующую гарантированную команду для десериализации ответа

Employee emp = response.getBody().as(Employee.class);

Приведенная выше команда автоматически завершится ошибкой и выдаст ошибку, когда дополнительныеполе, например адрес электронной почты или номер телефона, добавляется в тело ответа.

...