c# - Using .Net WebRequest Factory -


as richard willis suggests in http://blog.salamandersoft.co.uk/index.php/2009/10/how-to-mock-httpwebrequest-when-unit-testing/ i'm trying call web request moking behavior.

for (i asking me if i'm messing here) implemented iwebrequestcreate , extended webrequest , webresponse. (more details in link codes)

but in code had test register (webrequest.registerprefix) prefix:

[test] public void test() {      var = file.readallbytes(@"testdata\webservice\admrond_13jan2011_14jan2011.xml");      webrequest.registerprefix("mockprefix", new webrequestcreatemock());      webrequestfake request = webrequestcreatemock.createrequestfake(some);       _remoterepository.populatewithmeterdata(_meter);      ... (error in line before) 

then, got error: invalid uri: hostname not parsed.

but why? in populatewithmeterdata(meter meter) have call:

     webrequest request = webrequest.create(urllistmeteringdata);      webresponse ws = request.getresponse(); 

some suggestion? interesting post class implementations?


edit: @matthew ask:

public class webrequestcreatemock : iwebrequestcreate {      static webrequest _nextrequest;     static readonly object lockobject = new object();      static public webrequest nextrequest {         { return _nextrequest; }         set {             lock (lockobject) {                 _nextrequest = value;             }         }     }      public webrequest create(uri uri) {         return _nextrequest;     }      public static webrequestfake createrequestfake(byte[] xmlstream) {         webrequestfake webrequestfake = new webrequestfake(xmlstream);         nextrequest = webrequestfake;         return webrequestfake;     }  }  public class webrequestfake : webrequest {     memorystream requeststream = new memorystream();     memorystream responsestream;      public override string method { get; set; }     public override string contenttype { get; set; }     public override long contentlength { get; set; }      public webrequestfake(byte[] response) {         responsestream = new memorystream(response);     }      public override stream getrequeststream() {         return requeststream;     }      public override webresponse getresponse() {         return new webreponsefake(responsestream);     } }  public class webreponsefake : webresponse {      private readonly stream _responsestream;      public webreponsefake(stream responsestream) {         _responsestream = responsestream;     }      public override stream getresponsestream() {         return _responsestream;     } } 

and url like: mockprefix://nomatterurl

since error "invalid uri: hostname not parsed." screwing uri "mockprefix://nomatterurl"

i had problem once because forgot add "/" between domain uri , request parameters.

can post "nomatteruri" looks like?


Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -