0
私はスキーマを使用して応答JSONを検証しようとしています。 間違ったスキーマで応答を検証しようとしても、テストケースは合格です。JSON Scehma検証はどのようにして安心して動作しますか?
JSON応答:
[
{
"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スキーマ:
{
"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}
}
}
応答が必要とされserved_imsi値が含まれていないので、私はここでエラーを期待しています。しかし、テストは合格です。
Response response = RestAssured.given().when().get(getURL);
response.then().statusCode(Numbers.TWO_HUNDRED);
response.then().assertThat().body(JsonSchemaValidator.matchesJsonSchemaInClasspath("Schema.json"));
を、私は以下のエラーを参照してください。 警告:次のキーワードは不明で、無視されます:[downlinkBytes、firstProcessTime、key、serviceProvider、sliceMonth、sliceYear、totalBytes、updatedProcessTime、uplinkBytes] レベル: "警告" スキーマ:{"loadingURI": "file: D:/Workspaces/Testing/Target/classes/Schema/Schema.json# "、" pointer ":"/items "} ドメイン:"構文 " が無視されました:[" downlinkBytes "、" firstProcessTime "、" key " "serviceProvider"、 "sliceMonth"、 "sliceYear"、 "totalBytes"、 "updatedProcessTime"、 "uplinkBytes"] –