#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, спасибо, ответ обновлен. Дайте мне знать, я все еще чего-то не хватает!