Получение типа / значения ошибки при проверке схемы json с помощью ajv

Я пытаюсь использовать схему json для проверки json api.

Я нашел библиотеку ajv, которая кажется самой популярной для node.js.

Просто ознакомившись с основами, я определил свою схему как

const viewSchema = {
    "type": "object",
    "properties":{
        "title": {"type": "string"}
    }
}

export default viewSchema;

Затем я импортирую его в свой валидатор

import Ajv from 'ajv';

import viewSchema from './viewSchema';
const ajv = Ajv({allErrors: true});
let validate = ajv.compile(viewSchema);

const validateView = viewJson => {
    var isValid = validate(viewJson);
    console.log('------ text',ajv.errorsText(), isValid)
    if(isValid) return true;
    return ajv.errorsText();
}

export default validateView;

и используя мокко (с мокачино) проверьте результат

describe('validate view', () => {
    it('should error if title is not a string', () => {
        console.log('-----------',validateView({"title":122}))
        expect(validateView({"title":122}).errors).toContain('should be string');
    });
});

следуя указаниям на странице github ajv, я ожидаю, что мой тест завершится неудачно, поскольку требуемый тип - это строка и Я предоставил номер. Но ответ, который я получаю от ajv.errorsText(), No Errors, где он должен выдать ошибку.

Кажется так просто, что я делаю не так?


person pedalpete    schedule 14.08.2017    source источник


Ответы (1)


Вам нужно передать ошибки в ajv.errorsText():

ajv.errorsText(validate.errors)

Без параметра он вернет текст ошибки, если вы используете метод ajv.validate.

См. https://github.com/epoberezkin/ajv#errorstextarrayobject-errors--object-options---string

person esp    schedule 14.08.2017
comment
Спасибо, в основной документации написано if (!valid) console.log(ajv.errorsText());, так что я пошел с этим. - person pedalpete; 14.08.2017
comment
да, в случае использования ajv.validate. Необходимо добавить errorText к предыдущему примеру. - person esp; 14.08.2017