En Generic Handler är vanligen en fil som slutar på ändelsen .ashx och implementerar IHttpHandler.
Det finns många användningsområden för HttpHandlers. Det vanligaste jag använder HttpHandlers till är:
- Skicka ajax-request utan att använda en WebMethod.
- Skriva eller läsa från sessionen.
- Minifiera JS / CSS.
Nedan visas en vanlig HttpHandler. Det svåra med att testa denna är att du inte kan skapa upp en instans av HttpContext. Anledningen till detta är att konstruktorn i HttpContext är internal.
public class MyHttpHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.Write("Hello world!"); } public bool IsReusable { get { return false; } } }
Som tur är finns HttpContextBase och HttpContextWrapper. Detta medför att om man vill testa ovanstående klass (nej, inte mycket att testa men ändå...) så kan man göra detta genom att använda HttpContextBase.
public class MyHttpHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { ProcessRequest(new HttpContextWrapper(context)); } public void ProcessRequest(HttpContextBase context) { context.Response.Write("Hello World!"); } public bool IsReusable { get { return false; } } }Nästa post handlar om hur man testar HttpHandlern genom att mocka HttpContextBase, sätta upp ett unit-test och verifiera att HttpHandlern gör vad som förväntas.
/Nils
Inga kommentarer:
Skicka en kommentar