2016-11-02 3 views
0

Ich benutze Frisbyjs und Modul jsonschema, Jasmine-Knoten für den Lauf.
Es gibt eine solche Regelung Name test.json:frisbyjs und jsonschema (SchemaError: kein solches Schema)

{ 
    "error": { 
    "type": "array", 
    "minItems": 2, 
    "items": { 
     "type": "object", 
     "properties": { 
     "description_ru": { 
      "description": "Информация об ошибке на русском языке", 
      "type": "string" 
     }, 
     "description_en":{ 
      "description": "Информация об ошибке на английском языке", 
      "type": "string" 
     } 
     }, 
     "additionalProperties":false 
    } 
    } 
} 

Und mich brauchte gehören ihm andere Systeme, zB:

{ 
    "title": "Не корректный email", 
    "type": "object", 
    "properties": { 
    "status": { 
     "description": "Статус операции", 
     "type": "integer", 
     "enum": [68] 
    }, 
    "error": { 
     "$ref": "test.json#error" 
    } 
    }, 
    "required":["status", "error"], 
    "additionalProperties": false 
} 

Beide Systeme in demselben Verzeichnis befinden, nach dem Lauf Validator i nächste haben Fehler SchemaError: kein solches Schema

Wie löst man dieses Problem?

Antwort

1

Das Problem stammt wahrscheinlich aus der Zeile {"$ref": "test.json#error"} in Ihrem Schema. Es sollte sagen, dass es kein Schema in den Speicher namens "test.json" geladen ist.

Die meisten JSON Schema-Implementierungen desertieren ein Schema nicht automatisch, Sie müssen ihm sagen, wie jedes Schema aussieht.

Sie müssen den Schemas jeweils einen URI geben und sie mit validator.addSchema(require('test.json')) importieren. Weitere Informationen finden Sie unter README.

Alternativ können Sie eine einzelne Datei und speichern Sie die Definition in einer "Definitionen" Block:

{ 
    "title": "Не корректный email", 
    "type": "object", 
    "properties": { 
    "status": { 
     "description": "Статус операции", 
     "type": "integer", 
     "enum": [68] 
    }, 
    "error": {"$ref": "#/definitions/error"} 
    }, 
    "required":["status", "error"], 
    "additionalProperties": false, 
    "definitions": { 
    "error": {} 
    } 
} 
+0

Hallo! Danke für die Antwort. Wie kann ich in Frysby verwenden? Zum Beispiel: 'login.frisby.create (" Keine E-Mail senden ") .post (login.getPath ('user.login'), { E-Mail:" inc @ o/rrect @ aa @ a. @ “ Kennwort: "1234tv" }) .expectStatus (200) .expectJSONSchema ('./ schema/login/falsch-email.json') .toss();' –