Как внедрить зависимость WebRequest / Response? - PullRequest
0 голосов
/ 29 октября 2008

Я пытаюсь отделить зависимости в следующем коде:

    public static SiteConnector ConnectToSite(String Logon, String Password)
    {

        HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(_URI);
        ConfigureRequest(Logon, Password, webRequest);
        HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
        Cookie ReposonseCookie;
        //this looks for a cookie and spitsout a value based on response
        int value = ProcessResponse(webResponse,out  ReposonseCookie);

        return new SiteConnector(ReposonseCookie, value);

    }

По сути, я хочу провести модульное тестирование, не обращаясь к запросу на внешний сайт.

Как лучше всего это сделать?

1 Ответ

2 голосов
/ 29 октября 2008

Не знаю, как этот класс выглядит вне моей головы, но вы всегда можете обернуть их вокруг своего собственного, проверяемого класса.

public class WebRequestWrapper
{
   internal WebRequestWrapper() {..}

   public WebRequestWrapper(WebRequest req)
   {
      _innerRequest = req;
   }


   public virtual string Url
   {
      return _innerReq.Url;
   }

   //repeat, make all necessary members virtual
}

тогда вы можете использовать RhinoMocks для создания PartialMock этого класса. Он переопределит любое из виртуальных свойств.

...