Как проверить схему json с помощью avj и postman

#postman #ajv

#postman #ajv

Вопрос:

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

 {
    "errors": false,
}
  

используя это в postman:

 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;
});
  

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

примечание: журналы выглядят следующим образом

 this is error: false
  

введите описание изображения здесь

Ответ №1:

Вы можете проверить схему 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
}
  

Результат: Передача


Данные:

 {
    "errors": true
}
  

Результат: Передача


Данные:

 {
    "errors": 123
}
  

Результат: сбой


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

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

Комментарии:

1. вы упускаете суть.. данные являются логическими, и я хочу убедиться, что они логические, и завершаются ошибкой, когда это число

2. @abbood, спасибо, ответ обновлен. Дайте мне знать, я все еще чего-то не хватает!