2012-01-17 1 views
4

EDIT: La solution à la question peut être trouvée dans le premier commentaire de John Sheehan!Test de la désérialisation de RestSharp sans REST-Api correct

Je voudrais utiliser Restsharp comme Rest-Client pour mon projet. Puisque le serveur REST ne fonctionne pas encore, je voudrais tester le client sans le serveur. Mon objectif principal est la désérialisation de la réponse XML retournée. Est-il possible de désérialiser XML en utilisant RestSharp sans RestSharp.RestResponse?

Je l'ai essayé comme ceci:

public void testDeserialization() 
{ 
    XmlDeserializer d = new XmlDeserializer(); 
    RestSharp.RestResponse response = new RestSharp.RestResponse(); 
    string XML = @"<Response><Item1>Some text</Item1><Item2>Another text</Item2><Item3>Even more text</Item3></Response>"; 
    response.Content = XML; 

    d.RootElement = "Response"; 
    Response r = d.Deserialize<Response>(response); 
} 

public class Response 
{ 
    public string Item1 { get; set; } 
    public string Item2 { get; set; } 
    public string Item3 { get; set; } 
} 

Les deserializations crée un objet de la réponse de classe, où chaque champ est nul. Existe-t-il un moyen de tester si (et comment) un xml donné serait désérialisé par RestSharp?

Edit: Pour une meilleure lisibilité - c'est le XML j'utilise:

<Response> 
    <Item1>Some text</Item1> 
    <Item2>Another text</Item2> 
    <Item3>Even more text</Item3> 
</Response> 
+5

Vous ne devriez pas avoir à spécifier RootElement. C'est seulement pour quand la racine n'est pas au niveau supérieur. Essayez cela et laissez-moi savoir si cela fonctionne. Voici comment nous testons le désérialiseur pour le projet: https://github.com/restsharp/RestSharp/blob/master/RestSharp.Tests/XmlTests.cs –

+0

Merci. Cela a résolu le problème! (Mais je ne peux pas marquer la question comme résolue, parce que la solution est dans un commentaire ... :) – DIF

Répondre

6

J'espère que je fais ce droit - mais de préciser cette question est résolue, je suis copiais les solutions (à partir des commentaires de John Sheehan):

Vous ne devriez pas avoir à spécifier RootElement. C'est seulement pour quand la racine n'est pas au niveau supérieur. Essayez cela et laissez-moi savoir si cela fonctionne. Voilà comment nous testons la désérialiseur pour le projet: https://github.com/restsharp/RestSharp/blob/master/RestSharp.Tests/XmlDeserializerTests.cs

(EDIT: lien Mise à jour pour corriger le fichier)

+1

Heureux que cela a fonctionné. Je n'étais pas sûr à 100% alors je l'ai mis en commentaire. Heureux de vous avoir le représentant pour cela :) –

+0

Merci encore pour votre aide. Je ne voulais pas vous voler votre représentant bien mérité - désolé! – DIF

Questions connexes