Est-il possible de se moquer d'un .NET HttpWebResponse?

j'ai un test d'intégration qui prend des résultat json à partir d'un 3ème partie serveur. C'est très simple et fonctionne très bien.

J'espérais arrêter réellement frapper ce serveur et à l'aide de Moq (ou tout se moquant de la bibliothèque, comme ninject, etc) afin de détourner et de forcer le résultat de retour.

est-ce possible?

Voici un exemple de code :-

public Foo GoGetSomeJsonForMePleaseKThxBai()
{
    //prep stuff ...

    //Now get json please.
    HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("Http://some.fancypants.site/api/hiThere);
    httpWebRequest.Method = WebRequestMethods.Http.Get;

    string responseText;

    using (var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse())
    {
        using (var streamReader = new StreamReader(httpWebResponse.GetResponseStream()))
        {
            json = streamReader.ReadToEnd().ToLowerInvariant();
        }
    }

    //Check the value of the json... etc..
}

et bien sûr, cette méthode est appelée de mon test.

Je pensais que peut-être j'ai besoin de passer par cette méthode (ou une propriété de la classe?) un moqué httpWebResponse ou quelque chose, mais n'était pas trop sûr si c'était la voie. Aussi, la réponse est une sortie à partir d'une httpWebRequest.GetResponse() méthode .. donc peut-être que j'ai juste besoin de passer dans un moqué HttpWebRequest ?.

des suggestions avec des exemples de code serait le plus aprreciated!

InformationsquelleAutor Pure.Krome | 2012-03-22