2016-08-09 164 views
1

I API-Tests schreibe mit VS & C#API-Test in C# - Wie vergleiche ich die gesamte JSON-Antwort in 1 Assertion?

Ich habe einen Test, der wie folgt aussieht:

[TestCase("buddy")] 
public void CreatePet(string name) 
{ 
    //Setup Request 
    RestRequest = new RestRequest("pet", Method.POST); 

    //Load JSON File 
    string RequestBody = Utils.LoadJson("CreatePet.json"); 
    RestRequest.AddParameter("application/json", RequestBody, ParameterType.RequestBody); 

    //Call REST Resource 
    ResponseJSON = JSON_NET_GetResponse(RestRequest); 

    //Verify Response JSON 
    ((string) ResponseJSON.name).Should().Be("doggie"); 
    ((string) ResponseJSON.status).Should().Be("available"); 
    ((Int64) ResponseJSON.id).Should().BeGreaterThan(Int32.MaxValue); 
    ((string) ResponseJSON.tags[0].name).Should().Be("string"); 
    ((int) ResponseJSON.tags.Count).Should().Be(1);  
} 

Hinweis I 5 dort behauptet haben. Ich behaupte auf den meisten Zeilen des zurückgegebenen JSon.

Ist es möglich, einfach 1 Behauptung zu schreiben, die sicherstellt, dass die gesamte Json die gleiche ist wie beim letzten Mal? Ich nehme an, dass ich bestimmte Dinge wie GUIDs und Zeitstempel ignorieren müsste ... aber ansonsten möchte ich keine Zeile für Zeile schreiben, um für jede einzelne Sache zu schreiben ... in manchen Fällen könnten meine JSON-Antworten 50 Zeilen lang sein. ..

Ich nehme an, das ist ein gelöstes Problem und ich will das Rad nicht neu erfinden. Wie macht ihr das?

Die Json Antwort für meinen Test wie folgt aussieht:

{ 
    "id": 379856466726, 
    "category": { 
    "id": 0, 
    "name": "string" 
    }, 
    "name": "doggie", 
    "photoUrls": [ 
    "string" 
    ], 
    "tags": [ 
    { 
     "id": 0, 
     "name": "string" 
    } 
    ], 
    "status": "available" 
} 
+1

Wenn Sie wissen, was zu erwarten Sie in der Antwort, warum vergleichen Sie nicht die JSON-Zeichenfolgen für die Gleichheit – Nkosi

+0

Ich brauche es auch Dinge wie dynamische Zeitstempel und GUIDs zu ignorieren. Ich frage mich, ob es dafür schon eine Lösung gibt. – user952342

+0

Aber Sie sagten ursprünglich, dass Sie die gesamte JSON-Antwort vergleichen wollten. Es gibt nicht genügend Informationen in Ihrem Beitrag, um eine sinnvolle Unterstützung zu bieten. Bitte geben Sie eine [mcve] – Nkosi

Antwort