frisbyjs和jsonschema(SchemaError:没有这样的架构)

时间:2016-11-02 20:10:32

标签: json jsonschema frisby.js

我使用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:没有这样的架构

如何解决这个问题?

1 个答案:

答案 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": {}
  }
}