我使用frisbyjs和模块jsonschema,jasmine-node进行运行 有一个方案名称test.json:
{
"error": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"properties": {
"description_ru": {
"description": "Информация об ошибке на русском языке",
"type": "string"
},
"description_en":{
"description": "Информация об ошибке на английском языке",
"type": "string"
}
},
"additionalProperties":false
}
}
}
我需要包括他其他方案,例如:
{
"title": "Не корректный email",
"type": "object",
"properties": {
"status": {
"description": "Статус операции",
"type": "integer",
"enum": [68]
},
"error": {
"$ref": "test.json#error"
}
},
"required":["status", "error"],
"additionalProperties": false
}
两个方案都位于同一个目录中,运行验证程序后我有下一个错误 SchemaError:没有这样的架构
如何解决这个问题?
答案 0 :(得分:1)
问题可能来自您架构中的{"$ref": "test.json#error"}
行。应该说没有架构加载到内存中,名为“test.json”。
大多数JSON Schema实现不会自动取消引用架构,您必须告诉它每个架构的外观。
您需要为每个模式提供一个URI,然后使用validator.addSchema(require('test.json'))
导入它们。请参阅README。
或者,使用单个文件并将定义存储在“定义”块中:
{
"title": "Не корректный email",
"type": "object",
"properties": {
"status": {
"description": "Статус операции",
"type": "integer",
"enum": [68]
},
"error": {"$ref": "#/definitions/error"}
},
"required":["status", "error"],
"additionalProperties": false,
"definitions": {
"error": {}
}
}