views:

523

answers:

2

How do I mock a page request for a .net MVC page?

+4  A: 

Using RhinoMocks:

 var httpContext = MockRepository.GenerateMock<HttpContextBase>();
 var httpRequest = MockRepository.GenerateMock<HttpRequestBase>();

 httpContext.Expect( c => c.Request ).Return( httpRequest ).Repeat.Any();

 ... set up expectations on request...

 var controller = new MyController();
 controller.ControllerContext = new ControllerContext( httpContext,
                                                       new RouteData(),
                                                       controller );

 ...invoke action, check assertions...

 httpContext.VerifyAllExpectations();
 httpRequest.VerifyAllExpectations();
tvanfosson
+1  A: 

Using Moq:

var request = new Mock<HttpRequestBase>(MockBehavior.Strict);
request.Setup(x => x.ApplicationPath).Returns("/");
request.Setup(x => x.Url).Returns(new Uri("http://localhost/home"));
request.Setup(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection());

var context = new Mock<HttpContextBase>(MockBehavior.Strict);
context.SetupGet(x => x.Request).Returns(request.Object);

var controller = new YourController();
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
eu-ge-ne