2017-05-12 4 views
2

Ich habe API, die FluentValidations verwendet.Integrationstest API mit fließenden Validierung

Ich schreibe Integrationstest und wollte behaupten, dass schlechte Anfrage Antwort enthält Fehler Feldname und Nachrichten. Ich möchte nach Feldname und Nachricht suchen und sicherstellen, dass sie die gleichen sind, wie sie von fluentvalidations zurückgegeben wurden. Ich bekomme eine JSON-Antwort, die mit Validierungsfehlern gefüllt ist, aber ich bin mir nicht sicher, in welches Objekt ich mich deserialisieren sollte.

response.StatusCode.Should().Be(HttpStatusCode.BadRequest); 

var result = JsonConvert.DeserializeObject<?>(await response.Content.ReadAsStringAsync()); 
result.Should().BeOfType<?>(); 
result.Should().NotBeNull(); 
result.Should().HaveCount(something); 

Probe Antwort ist fluentvalidation Antwort

{ 
    "Name": [ 
    "Name is required.", 
    "Name length cannot be more that 255 chars" 
    ], 
    "ListTypeId": [ 
    "Invalid listtypeid" 
    ], 
    "PartyRoleId": [ 
    "Invalid partyroleid" 
    ] 
} 
+0

Geben Sie ein Beispiel dafür, was die json Antwortinhalt sieht befriedigen können – Nkosi

+0

aktualisiert. seine grundlegende rohe Antwort, die aus der Fluentvalidation kommt – krishna

Antwort

1

In Anbetracht der vorgesehenen JSON Beispiel ein IDictionary<string,string[]> sollte wie dieses Modell

response.StatusCode.Should().Be(HttpStatusCode.BadRequest); 
var json = await response.Content.ReadAsStringAsync(); 
var result = JsonConvert.DeserializeObject<IDictionary<string,string[]>>(json); 
result.Should().BeOfType<IDictionary<string,string[]>>(); 
result.Should().NotBeNull(); 
result.Should().HaveCount(something); 
+0

ah. Vielen Dank. Es tut mir leid, dass ich so früh aufgegeben habe. Ich hätte es herausfinden müssen. – krishna

Verwandte Themen