Hi Justin , Can I use Unity from Codplex ?
Thanks & Regards, Chirag On Mon, Nov 17, 2008 at 7:54 PM, Justin Chase <[EMAIL PROTECTED]> wrote: > > FYI, a quick list of IOC Containers: > > http://csharp-source.net/open-source/containers > > > On Nov 17, 8:21 am, "Justin Chase" <[EMAIL PROTECTED]> wrote: > > I don't know if you can effectively mock the HttpContext. It's sealed and > > has no interfaces... it's one massive side effect. I would recommend > > abstracting your use of it out to a custom class that wraps it and helps > you > > break direct dependencies on it. > > > > One way I would recommend to do this is by using an IOC container and > > abstracting out the http context. So suppose all you want is the current > > User off of the HttpContext. Instead of directly referencing the context > > make an interface and class like this: > > public interface IHttpContext > > { > > IPrincipal User { get; } > > > > } > > > > public class HttpContextWrapper : IHttpContext > > { > > HttpContext _context; > > public HttpContextWrapper(HttpContext context) > > { > > _context = context; > > } > > > > public IPrincipal User { get { return _context.User; } } > > > > } > > > > Now in your code that used to call the context to get the user do > something > > like this: > > > > IHttpContext context = Container.Create<IHttpContext>(); > > IPrincipal user = context.User; > > > > Now to register it in your real code, at app initialization: > > > > Container.Register<IHttpContext>(() => return new > > HttpContextWrapper(HttpContext.Current)); > > > > and using Rhino Mocks in your unit test library instead register it this > > way: > > > > IHttpContext context = MockRepository.GenerateMock<IHttpContext>(); > > Container.Register<IHttpContext>(() => return context); > > > > The exact syntax for the container is just psuedo code above, it depends > on > > the framework you're using but the concepts are generally the same. You > use > > the container as a factory method to break dependencies between types. In > > the real app you register the real types in the test app you register > mock > > types. > > > > On Mon, Nov 17, 2008 at 1:40 AM, chiragkumar maisuriya < > > > > > > > > [EMAIL PROTECTED]> wrote: > > > > > Hi Ayende, > > > > >> I am working on Rhino Mocks and trying to mock out the HttpContext for > one > > >> of my Controller's Method using rhino Mocks but Finding a lot of > troubles > > > > >> I am sending the my Method and Test Method. Please Suggest me some > way so > > >> that I can mock out HttpContext Object for Unit Test my method. > > > > >> public override bool Execute(string moduleId, string actionId, > > >> HttpContext context) > > > > >> { > > > > >> switch (actionId) > > > > >> { > > > > >> case "Init": > > > > >> LoadData(); > > > > >> break; > > > > >> default: > > > > >> break; > > > > >> } > > > > >> dealerBulletinDetailsEntity.ActionId = actionId; > > > > >> SetContext(dealerBulletinDetailsEntity, context); > > > > >> SetContext(rulesEntity, context); > > > > >> return RedirectUrl(moduleId, context); > > > > >> } > > > > >> Test Method > > > > >> [ > > >> TestMethod()] > > > > >> public void ExecuteTest() > > > > >> { > > > > >> PolicyRulesController target = new PolicyRulesController(); // TODO: > > >> Initialize to an appropriate value > > > > >> string moduleId = string.Empty; // TODO: Initialize to an appropriate > > >> value > > > > >> string actionId = string.Empty; // TODO: Initialize to an appropriate > > >> value > > > > >> HttpContextBase context = > MockRepository.GenerateStub<HttpContextBase>(); > > > > >> bool expected = false; // TODO: Initialize to an appropriate value > > > > >> bool actual; > > > > >> actual = target.Execute(moduleId, actionId, context); > > > > >> Assert.AreEqual(expected, actual); > > > > >> Assert.Inconclusive("Verify the correctness of this test method."); > > > > >> } > > > > >> Thanks & Regards, > > > > >> Chirag > > > > -- > > Justin Chasehttp://www.justnbusiness.com > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino.Mocks" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/RhinoMocks?hl=en -~----------~----~----~----~------~----~------~--~---
