簡體   English   中英

JSON模式驗證在Postman中失敗,即使它是有效的

[英]JSON schema validation is failing in Postman even if it's valid

我需要針對JSON模式驗證以下響應。 問題是,即使架構有效,也總是失敗。

{
    "items": [
        {
            "uuid": "f68ad4ba-a11e-485d-a2d7-17b9b07bd8d3",
            "name": "Code",
            "type": "app_code",
            "description": "Code 1",
            "content_type": "application/javascript",
            "audit": {
                "created_date": "2017-11-02T00:16:58.000Z",
                "created_by": "e7c97dc1-08eb-45ef-b883-d100553bac5c"
            }
        },
        {
            "uuid": "3c9e59b0-f6c7-4788-8a14-0b3e99fc4306",
            "name": "Object demo 2",
            "type": "app_code",
            "description": "Object demo 2 description",
            "content_type": "application/javascript",
            "audit": {
                "created_date": "2017-11-02T13:48:22.000Z",
                "created_by": "e7c97dc1-08eb-45ef-b883-d100553bac5c"
            }
        },
        {
            "uuid": "e2f54e6c-a158-4f43-a332-1c99bb76684e",
            "name": "toolbox_test_results",
            "type": "toolbox_tests",
            "description": "This is snapshots for React-OSS Toolbox",
            "content_type": "application/json",
            "audit": {
                "created_date": "2017-11-07T11:29:02.000Z",
                "created_by": "e7c97dc1-08eb-45ef-b883-d100553bac5c"
            }
        }
    ],
    "metadata": {
        "total": 124,
        "count": 3
    },
    "links": [
        {
            "rel": "self",
            "href": "http://microsvcs.star2star.net:10010/users/e7c97dc1-08eb-45ef-b883-d100553bac5c/objects?load_content=false&limit=3&offset=0"
        },
        {
            "rel": "first",
            "href": "http://microsvcs.star2star.net:10010/users/e7c97dc1-08eb-45ef-b883-d100553bac5c/objects?load_content=false&limit=3&offset=0"
        },
        {
            "rel": "next",
            "href": "http://microsvcs.star2star.net:10010/users/e7c97dc1-08eb-45ef-b883-d100553bac5c/objects?load_content=false&limit=3&offset=3"
        },
        {
            "rel": "last",
            "href": "http://microsvcs.star2star.net:10010/users/e7c97dc1-08eb-45ef-b883-d100553bac5c/objects?load_content=false&limit=3&offset=123"
        }
    ]
}

我在郵遞員中使用以下代碼進行驗證:

//定義JSON模式

const objectSchema = {
  "items": [
    {
      "audit": {
        "created_by": "string",
        "created_date": "string",
        "updated_by": "string",
        "updated_date": "string"
      },
      "content": {},
      "content_type": "string",
      "description": "string",
      "name": "string",
      "type": "string",
      "uuid": "string"
    }
  ],
  "links": [
    {
      "href": "string",
      "rel": "string",
      "templated": true
    }
  ],
  "metadata": {}
};


pm.test("JSON schema validation", function() {
  var responseData = JSON.parse(responseBody);
  var result = tv4.validate(responseData, objectSchema, false, true);
  if (result !== true) {
      console.log('Schema validation failed:', tv4.error);
  }
  pm.expect(result).to.be.true;
  console.log(JSON.stringify(result));
});

如何在控制台中獲得詳細的錯誤(例如:哪個字段的類型錯誤或丟失)? 來自控制台的實際錯誤:

message:"Unknown property (not in schema)"
name:"ValidationError"
type:"Error

”預先感謝您的回答!

詳細闡述@Pavlo的評論:

在您的測試中:

pm.test("JSON schema validation", function() {
  var responseData = JSON.parse(responseBody);
  var result = tv4.validate(responseData, objectSchema, false, true);
  if (result !== true) {
      console.log('Schema validation failed:', tv4.error);
  }
  pm.expect(result).to.be.true;
  console.log(JSON.stringify(result));
});

這行var responseData = JSON.parse(responseBody); 應替換為:

var responseData = pm.response.json();

此外,從此答案中,您可以添加以下行以獲取有關架構失敗位置的更多信息:

console.log(tv4.error.dataPath);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM