根据JSON模式验证JS测试

时间:2017-12-11 09:59:17

标签: javascript json testing postman jsonschema

我有一个API,它以

格式返回响应
[
{"id": 12345,
"value": "some_string",
"practice_id": "12344"},

{"id": 12346,
"value": "some_other_string",
"practice_id": "12345"},
]

我正在测试响应是否验证了特定的JSON-Schema,我的模式测试是

response.body.should.have.schema({
        type: 'array',
        required: ['id', 'value', 'practice_id'],
        properties: {
            id: {
                type: 'number',
            },
            value: {
                type: 'string',
            },
            practice_id: {
                type: 'string',
                minLength: 5,
            }            
        }
    });

问题是即使我将id的类型更改为string或将practice_id的值更改为number,测试也会通过,这是不正确的。

我在这里做错了什么?我正在使用Postman-BDD来验证回复。

1 个答案:

答案 0 :(得分:1)

我猜你的架构应该更像这样:

{
  "type": "array",
  "items":
  {
    "required":
    [
        "id",
        "value",
        "practice_id"
    ],
    "properties":
    {
        "id":
        {
            "type": "number"
        },
        "value":
        {
            "type": "string"
        },
        "practice_id":
        {
            "type": "string",
            "minLength": 5
        }
    }
  }
}

你错过了"项目"实际定义数组内容的关键字。此架构还在JSONBuddy中验证了一些示例数据: enter image description here