ped*_*ete 3 json jsonschema ajv
我正在尝试使用json模式来验证api的json.
我找到了ajv库,它似乎是node.js最受欢迎的.
刚刚获得基础知识,我已将我的架构定义为
const viewSchema = {
"type": "object",
"properties":{
"title": {"type": "string"}
}
}
export default viewSchema;
Run Code Online (Sandbox Code Playgroud)
然后我将它导入我的验证器
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;
Run Code Online (Sandbox Code Playgroud)
并使用mocha(使用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');
});
});
Run Code Online (Sandbox Code Playgroud)
按照ajv github页面的指示,我希望我的测试失败,因为所需的类型是一个字符串,我提供了一个数字.但我得到的回应ajv.errorsText()是No Errors应该提供错误的地方.
似乎这么简单,我做错了什么?
您需要将错误传递给ajv.errorsText():
ajv.errorsText(validate.errors)
Run Code Online (Sandbox Code Playgroud)
如果使用方法,如果没有参数,它将返回错误文本ajv.validate.
请参阅https://github.com/epoberezkin/ajv#errorstextarrayobject-errors--object-options---string
| 归档时间: |
|
| 查看次数: |
775 次 |
| 最近记录: |