Come iniettare una dipendenza WebRequest / Response?
-
05-07-2019 - |
Domanda
Faccio fatica a separare le dipendenze nel seguente codice:
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);
}
In sostanza voglio testare l'unità senza fare affidamento sulla richiesta al sito Web esterno.
Quale sarebbe il modo migliore per farlo?
Soluzione
Non sono sicuro di come quella classe appaia dalla cima della mia testa, ma puoi sempre avvolgerla intorno alla tua classe, testabile.
public class WebRequestWrapper
{
internal WebRequestWrapper() {..}
public WebRequestWrapper(WebRequest req)
{
_innerRequest = req;
}
public virtual string Url
{
return _innerReq.Url;
}
//repeat, make all necessary members virtual
}
quindi puoi usare RhinoMocks per creare un PartialMock di questa classe. L'IT sovrascriverà qualsiasi proprietà virtuale.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow