2017-05-12 1 views
2

J'ai une API qui utilise FluentValidations. J'écris un test d'intégration et je voulais affirmer que la mauvaise réponse à la requête contient le nom et les messages du champ d'erreur. Je veux vérifier pour le nom de champ, et le message et m'assurer qu'ils sont mêmes comme renvoyés de fluentvalidations. Je reçois une réponse json remplie d'erreurs de validation mais je ne sais pas dans quel objet devrais-je désérialiser.test d'intégration api ayant une validation fluide

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

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

échantillon est une réponse fluentvalidation

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

Donner un exemple de ce que le contenu de la réponse JSON ressemble – Nkosi

+0

mis à jour. sa réponse brute de base qui vient de fluentvalidation – krishna

Répondre

1

Compte tenu de la condition exemple JSON un IDictionary<string,string[]> devrait être en mesure de satisfaire ce modèle

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. merci beaucoup .. je suis désolé j'ai abandonné si tôt .. j'aurais dû le comprendre. – krishna