TV4 JSON Schema массив объектов проверки
Я хотел бы проверить, что свойство с именем "foo" содержит массив объектов "bar".
Используя TV4 для проверки, все работает как положено, если я использую массив в качестве значения foo, однако, если я указываю что-то, кроме массива, например строку или целочисленную проверку, она проходит, когда этого не следует.
var json = { "foo" : { "one" : "bar" }};
Проходит, как и ожидалось, с правильно отформатированным массивом.
var json = { "foo" : { "bar" : "error" }};
Сбой, как и ожидалось, с неверно отформатированным массивом.
var json = { "foo" : 2 };
Проходит событие, хотя foo должен быть массивом.
Ниже приведен полный код.
var should = require("should");
var validator = require("tv4");
var barSchema = {
"id": "bar",
"type" : "object",
"properties": {
"one": {
"type": "string"
}
},
"required": ["one"],
"additionalProperties": false
}
var fooSchema = {
"id" : "foo",
"title": "foo",
"type": "object",
"properties": {
"foo" : {
"type:" : "array",
"items": {"$ref":"bar"}
}
},
"required": [
"foo"
]
}
describe("foo with integer", function() {
it("should result in an error message", function(){
var json = {
"foo" : 2
}
validator.addSchema(barSchema);
var result = validator.validate(json, fooSchema);
// above should fail but it passes
});
});
1 ответ
Я думаю, что вы пропустили, чтобы добавить fooSchema в валидатор:
describe("foo with integer", function() {
it("should result in an error message", function(){
var json = {
"foo" : 2
}
validator.addSchema(barSchema);
validator.addSchema(fooSchema);
var result = validator.validate(json, fooSchema);
// above should fail but it passes
});
});