Ich versuche, eine Antwort JSON mit einem Schema zu validieren. Selbst beim Versuch, eine Antwort mit falschem Schema zu validieren, wird der Testfall bestanden.Wie funktioniert die JSON Sceha Validation im Ruhezustand?
JSON Antwort:
[
{
"downlinkBytes": 478,
"firstProcessTime": {
"millisSinceEpoch": 1501113600000,
"daysSinceEpoch": 17374,
"month": 7,
"year": 2017,
"day": 27
},
"sliceMonth": 5,
"sliceYear": 2017,
"totalBytes": 548,
"updatedProcessTime": {
"millisSinceEpoch": 1514764800000,
"daysSinceEpoch": 17532,
"month": 1,
"year": 2018,
"day": 1
},
"uplinkBytes": 54,
"key": {
"slicePeriod": {
"millisSinceEpoch": 1493596800000,
"daysSinceEpoch": 17287,
"month": 5,
"year": 2017,
"day": 1
},
"serviceProvider": "ABC"
}
}
]
JSON Schema:
{
"type" : "array",
"items" : {
"downlinkBytes" : {"type" : "number", "required" : true},
"firstProcessTime" : {
"type" : "object",
"properties" : {
"millisSinceEpoch" : {"type" : "number", "required" : true},
"daysSinceEpoch" : {"type" : "number", "required" : true},
"month" : {"type" : "number", "required" : true},
"year" : {"type" : "number", "required" : true},
"day" : {"type" : "number", "required" : true}
}
},
"sliceMonth" : {"type" : "number", "required" : true},
"sliceYear" : {"type" : "number", "required" : true},
"totalBytes" : {"type" : "number", "required" : true},
"updatedProcessTime" : {
"type" : "object",
"properties" : {
"millisSinceEpoch" : {"type" : "number", "required" : true},
"daysSinceEpoch" : {"type" : "number", "required" : true},
"month" : {"type" : "number", "required" : true},
"year" : {"type" : "number", "required" : true},
"day" : {"type" : "number", "required" : true}
}
},
"uplinkBytes" : {"type" : "number", "required" : true},
"key" : {
"type" : "object",
"properties" : {
"server_imsi" : {"type" : "number", "required" : true},
"millisSinceEpoch" : {"type" : "number", "required" : true},
"daysSinceEpoch" : {"type" : "number", "required" : true},
"month" : {"type" : "number", "required" : true},
"year" : {"type" : "number", "required" : true},
"day" : {"type" : "number", "required" : true}
}
},
"serviceProvider" : {"type" : "string", "required" : true}
}
}
Ich erwarte einen hier Fehler, da die Antwort nicht served_imsi Wert enthält, die benötigt wird. Aber der Test ist vorüber.
Response response = RestAssured.given().when().get(getURL);
response.then().statusCode(Numbers.TWO_HUNDRED);
response.then().assertThat().body(JsonSchemaValidator.matchesJsonSchemaInClasspath("Schema.json"));
auf debug sehe ich die folgenden Fehler: Der Inhalt des gegebenen JSON-Schema entsprechen. Warnung: Die folgenden Stichworte sind unbekannt und werden ignoriert: [downlinkBytes, firstProcessTime, Schlüssel, serviceprovider, sliceMonth, sliceYear, totalbytes, updatedProcessTime, uplinkBytes] Ebene: "Warnung" Schema: { "loadingURI": "file:/D: /Workspaces/Testing/target/classes/Schema/Schema.json # "," Zeiger ":"/Elemente "} Domäne:" Syntax " ignoriert: [" downlinkBytes "," firstProcessTime "," Schlüssel ", "serviceProvider", "sliceMonth", "sliceYear", "totalBytes", "updatedProcessTime", "uplinkBytes"] –