У меня есть интеграционный тест, который получает некоторые результаты 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..
}
и, конечно, этот метод вызывается из моего теста
Я подумал, что, может быть, мне нужно передать в этот метод (или свойство класса?) mocked httpWebResponse
или что-то в этом роде, но не был уверен, так ли это.Кроме того, ответ является результатом метода httpWebRequest.GetResponse()
.. так что, возможно, мне просто нужно передать издевательский HttpWebRequest
?.
Будут очень признательны любые предложения с примерами кода!