2017-12-28 49 views
0

Tests ["Valid schema"] = tv4.validate (jsonData, schema); wird auch übergeben, wenn "error" und "responseType" im Schema fehlen. So stellen Sie sicher, dass die Antwort und das Schema für das JSON-Schema übereinstimmen.POSTMAN - Schema-Validierung wird auch für ungültige Antwortdaten übergeben

, wenn ich Post-Anforderung treffen auf Postbote, ist die folgende Antworttext in Postbote

{ 
    "statusCode": 400, 
    "error": "Bad Request", 
    "message": "Email/Phone number not found", 
    "responseType": "EMAIL_NOT_FOUND", 
    "arabicMessage": "البريد الإلكتروني/رقم الهاتف غير موجود" 
    } 

Tests in Postman

var jsonData=JSON.parse(responseBody) 
var schema ={ 
    "statusCode": {"type":"integer"}, 
    "message": {"type":"string"}, 
    "arabicMessage":{"type":"string"}, 
    "data": { 
     "accessToken": {"type":"string"}, 
     "userDetails": { 
      "_id": {"type":"string"}, 
      "deviceType": {"type":"string"}, 
      "countryCode": {"type":"string"}, 
      "OTPCode": {"type":"integer"}, 
      "invitationCode": {"type":"string"}, 
      "availableCredits": {"type":"integer"}, 
      "totalBookings": {"type":"integer"}, 
      "promoCodes": {"type":"array"}, 
      "updatedAt": {"type":"string"}, 
      "createdAt": {"type":"string"}, 
      "language": {"type":"string"}, 
      "IsDeleted": {"type":"boolean"}, 
      "IsVerified": {"type":"boolean"}, 
      "IsBlock": {"type":"boolean"}, 
      "customerAddresses": {"type":"array"}, 
      "address":{"type":"string"}, 
      "phoneVerified": {"type":"boolean"}, 
      "currentLocation": { 
       "type": "Point", 
       "coordinates": [ 
        {"type":"integer"}, 
        {"type":"integer"} 
       ] 
      }, 
      "appVersion": {"type":"integer"}, 
      "profilePicURL": { 
       "thumbnail": {"type":"string"}, 
       "original": {"type":"string"} 
      }, 
      "password": {"type":"string"}, 
      "socialId": {"type":"string"}, 
      "phoneNo": {"type":"integer"}, 
      "email": {"type":"string"}, 
      "LastName": {"type":"string"}, 
      "firstName": {"type":"string"}, 
      "__v": {"type":"integer"}, 
      "referralCode": {"type":"string"}, 
      "accessToken": {"type":"string"}, 
      "deviceToken": {"type":"string"} 
     }, 
     "updateAvailable": {"type":"boolean"}, 
     "stateCallBookingIds": {"type":"array"}, 
     "forceUpdate": {"type":"boolean"} 
    } 
}; 
tests["Valid schema"] = tv4.validate(jsonData, schema); 
//here the test is passing even with invalid jsonData which is the data      
console.log("Validation failed: ", tv4.error); 
+0

Könnten Sie ein Bild der Postbote Ausgabe veröffentlichen, so dass wir sehen können, was es ist die Validierung gegen? –

+0

FYI der Antwortkörper, den ich oben erwähnt habe, ist der Postboten-Output @DannyDainton –

Antwort

2

Es gibt viele open issues auf dem Postman GitHub Konto über die tv4 Modul.

Es gibt eine ähnliche Frage zu SO here, könnte Ihr jsonData anders als Ihr Schema sein?

Dies ist ein von einem Link auf der Tv4 Github-Seite.

"title": "Person", 
"type": "object", 
"properties": { 
    "firstName": { 
     "type": "string" 
    }, 
    "lastName": { 
     "type": "string" 
    }, 
    "age": { 
     "description": "Age in years", 
     "type": "integer", 
     "minimum": 0 
    } 
}, 
"required": ["firstName", "lastName"] 
} 

Sie könnten versuchen, diese Felder als required hinzuzufügen?

+0

danke, ich habe es erneut versucht mit "Eigenschaften" und "erforderlich". es funktioniert jetzt. –

+0

@RanjithKasu Cool, hat das die Frage beantwortet? –

1

Nur lassen Sie das hier, falls es jemand anderen hilft. tv4.validate hat zwei zusätzliche boolesche Parameter: checkRecursive und banUnkownProperties.

Insbesondere die letzte kann helfen, Fehler in JSON-Antworten zu finden, wenn sie Attribute enthalten, die nicht im Schema definiert sind.

Reference

Verwandte Themen