我正在尝试使用json模式来验证api的json。
我找到了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;
并使用摩卡(与mochaccino一起)测试输出
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');
});
});
按照ajv github page的指示,我期望测试失败,因为所需的类型是字符串,并且提供了数字。但是我从
ajv.errorsText()
得到的响应是No Errors
,它应该提供错误。似乎如此简单,我在做什么错?
最佳答案
您需要将错误传递给ajv.errorsText()
:
ajv.errorsText(validate.errors)
如果不使用参数,则使用方法
ajv.validate
将返回错误文本。见https://github.com/epoberezkin/ajv#errorstextarrayobject-errors--object-options---string