Можно ли макет .NET HttpWebResponse?

у меня есть тест интеграции, который получает некоторые результаты JSON со стороннего сервера. Это действительно просто и прекрасно работает.

Я надеялся остановить на самом деле попадание на этот сервер и использованиеMoq (или любая библиотека Mocking, например, ninject и т. д.) для взлома и принудительного возврата результата.

Это возможно?

Вот пример кода: -

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..
}

и, конечно, этот метод вызывается из моего теста.

Я думал, что, возможно, мне нужно передать в этот метод (или свойство класса?) ИздевалисьhttpWebResponse или что-то, но я не был уверен, так ли это. Кроме того, ответ является выходом изhttpWebRequest.GetResponse() метод .. так что, возможно, мне просто нужно пройти в издевалисьHttpWebRequest ?.

любые предложения с некоторым примером кода будут наиболее ценными!

Ответы на вопрос(7)

Ваш ответ на вопрос