Как проверить схему JSON с помощью avj и почтальона - PullRequest
1 голос
/ 06 марта 2019

Я пытаюсь проверить следующий json, который выглядит следующим образом:

{
    "errors": false,
}

, используя это на почтальоне:

var Ajv = require('ajv'),
    ajv = new Ajv({logger: console, coerceTypes: false}),
    schema = {

        "errors": {
                "type": "number"
            }
    };


pm.test('Schema is valid', function() {
    var error = pm.response.json()['errors'];
    console.log("this is error: " +error);
    pm.expect(ajv.validate(schema, {errors: error})).to.be.true;
});

pm.test('Schema is valid different way', function() {
    var error = pm.response.json()['errors'];
    console.log("this is error: " +error);
    var validate = ajv.compile(schema);
    pm.expect(validate(pm.response.json())).to.be.true;
});

, но он всегда проходит, хотя мой объект ошибокэто boolean, а не number.Что я делаю не так?

примечание: логи выглядят так

this is error: false

enter image description here

1 Ответ

2 голосов
/ 06 марта 2019

Вы можете проверить схему json, используя avj в Postman, следующим образом:

    var Ajv = require('ajv'),
    ajv = new Ajv({logger: console}),
    schema = {
        "properties": {
            "errors": {
                "type": "boolean"
            }
        }
    };

pm.test('Schema is valid', function() {
    var error = pm.response.json()['errors'];
    pm.expect(ajv.validate(schema, {errors: error})).to.be.true;
});

Данные:

{
    "errors": false
}

Результат: Pass


Данные:

{
    "errors": true
}

Результат: Pass


Данные:

{
    "errors": 123
}

Результат: Fail


Альтернативный способ

pm.test('Schema is valid', function() {
   pm.expect(typeof(pm.response.json().errors) === "boolean").to.be.true;
});
...