RestAssured:如果响应主体具有额外的值,如何使用JSON模式验证响应主体?

时间:2019-10-21 07:15:04

标签: rest-assured rest-assured-jsonpath

我正在使用matchesJsonSchemaInClasspath验证json模式。如果响应正文具有schema.json文件中定义的相同值,则效果很好。
 如果响应主体具有未在json模式中定义的EXTRA变量/值,则它不会失败。如何使该测试用例失败?

例如:
 以下是具有预定义JSON模式的响应主体。

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

如果响应正文提供了诸如电子邮件/电话之类的额外值,则它仍在传递。我需要使它失败。这是我的测试用例,如果响应主体返回额外的值,它将失败。如何验证此测试用例?

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

1 个答案:

答案 0 :(得分:2)

创建代表json的POJO类

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;
 }
}

使用以下rest sure命令反序列化响应

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

将其他字段(例如电子邮件或电话号码)添加到响应正文时,上述命令将自动失败并引发错误。