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
-~----------~----~----~----~------~----~------~--~---