POSTMAN返回模式验证测试失败

时间:2016-12-20 19:38:56

标签: json schema postman tv4

我有一个示例回复:

{
  "tags": [
    {
      "id": 1,
      "name": "[String]",
      "user_id": 1,
      "created_at": "2016-12-20T15:50:37.000Z",
      "updated_at": "2016-12-20T15:50:37.000Z",
      "deleted_at": null
    }
  ]
}

我已经为回复写了一个测试:

var schema = {
    "type": "object",
    "properties": {
        "tags": {
            "type": "object",
            "properties": {
                "id": { "type": "integer" },
                "name": { "type": "string" },
                "user_id": { "type": "number" },
                "created_at": { "type": "string" },
                "updated_at": { "type": "string" },
                "deleted_at": { "type": ["string", "null"] }
            }
        }
    }
};
var data = JSON.parse(responseBody);

tests["Valid schema"] = tv4.validate(data, schema);

此测试返回[FAIL]。测试中有什么错误?

感谢您的回复!

1 个答案:

答案 0 :(得分:7)

tags的定义存在问题,因为它是一个数组而不是一个对象。您应该将其属性嵌套到其项属性中。

此代码正在通过测试:

test_data = {
  "tags": [
    {
      "id": 1,
      "name": "[String]",
      "user_id": 1,
      "created_at": "2016-12-20T15:50:37.000Z",
      "updated_at": "2016-12-20T15:50:37.000Z",
      "deleted_at": null
    }
  ]
}

test_schema = {
    "type": "object",
    "properties": {
        "tags": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": { "type": "integer" },
                    "name": { "type": "string" },
                    "user_id": { "type": "number" },
                    "created_at": { "type": "string" },
                    "updated_at": { "type": "string" },
                    "deleted_at": { "type": ["string", "null"] }
                }
            }
        }
    }
};
tests["Testing schema"] = tv4.validate(test_data, test_schema);
console.log("Validation errors: ", tv4.error);