Skip to content

Instantly share code, notes, and snippets.

@lkaczanowski
Last active August 29, 2015 14:14
Show Gist options
  • Save lkaczanowski/8c50b3dff3ae76080639 to your computer and use it in GitHub Desktop.
Save lkaczanowski/8c50b3dff3ae76080639 to your computer and use it in GitHub Desktop.
MVC ModelBinder test helper
public static class MvcModelBinderTestHelper
{
public static ModelBindingContext FakeModelBindingContext<T>(NameValueCollection formCollection) where T : class
{
var valueProvider = new NameValueCollectionValueProvider(formCollection, null);
var metadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(T));
var bindingContext = new ModelBindingContext
{
ModelName = "",
ValueProvider = valueProvider,
ModelMetadata = metadata
};
return bindingContext;
}
private static ControllerContext FakeControllerContext(Mock<HttpSessionStateBase> sessionMock, Mock<HttpRequestBase> requestMock, Mock<HttpResponseBase> responseMock, Mock<HttpServerUtilityBase> serverMock)
{
var controllerContext = new ControllerContext
{
HttpContext = FakeHttpContext(sessionMock, requestMock, responseMock, serverMock)
};
return controllerContext;
}
private static HttpContextBase FakeHttpContext(Mock<HttpSessionStateBase> sessionMock, Mock<HttpRequestBase> requestMock, Mock<HttpResponseBase> responseMock, Mock<HttpServerUtilityBase> serverMock)
{
var context = new Mock<HttpContextBase>();
var request = requestMock;
var response = responseMock;
var session = sessionMock;
var server = serverMock;
context.Setup(ctx => ctx.Request).Returns(request.Object);
context.Setup(ctx => ctx.Response).Returns(response.Object);
context.Setup(ctx => ctx.Session).Returns(session.Object);
context.Setup(ctx => ctx.Server).Returns(server.Object);
return context.Object;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment