1: public class MockMvcHttpContext
2: {3: public Moq.Mock<System.Web.HttpContextBase> Context { get; set; }
4: 5: public Moq.Mock<System.Web.HttpRequestBase> Request { get; set; }
6: 7: public Moq.Mock<System.Web.HttpResponseBase> Response { get; set; }
8: 9: public System.Web.HttpCookieCollection Cookie { get; set; }
10: 11: public System.Web.Mvc.Controller Controller { get; set; }
12: 13: private System.Collections.Specialized.NameValueCollection _form;
14: public System.Collections.Specialized.NameValueCollection Form {
15: get 16: {17: return _form;
18: } 19: set 20: {21: _form = value;
22: this.Controller.ValueProvider = new System.Web.Mvc.FormCollection(value).ToValueProvider();
23: } 24: }25: public System.Collections.Specialized.NameValueCollection Query { get; set; }
26: } 27: 28: public static class MvcTestExtensions
29: {30: public static MockMvcHttpContext SetupFullContext(this System.Web.Mvc.Controller controller)
31: {32: return controller.SetupContext().SetupRequest().SetupResponse().SetupCookie().SetupForm().SetupQuerystring();
33: } 34: 35: public static MockMvcHttpContext SetupContext(this System.Web.Mvc.Controller controller)
36: { 37: 38: var context = new Moq.Mock<System.Web.HttpContextBase>();
39: controller.ControllerContext = new System.Web.Mvc.ControllerContext(context.Object, new System.Web.Routing.RouteData(), controller);
40: var obj = new MockMvcHttpContext()
41: { 42: Controller = controller, 43: Context=context 44: };45: return obj;
46: } 47: 48: public static MockMvcHttpContext SetupRequest(this MockMvcHttpContext context)
49: {50: if (context.Context == null)
51: {52: throw new System.ArgumentNullException("context.Context");
53: }54: var request = new Moq.Mock<System.Web.HttpRequestBase>();
55: context.Context.SetupGet(x => x.Request).Returns(request.Object); 56: context.Request = request;57: return context;
58: } 59: 60: public static MockMvcHttpContext SetupResponse(this MockMvcHttpContext context)
61: {62: if (context.Context == null)
63: {64: throw new System.ArgumentNullException("context.Context");
65: }66: var response = new Moq.Mock<System.Web.HttpResponseBase>();
67: context.Context.SetupGet(x => x.Response).Returns(response.Object); 68: context.Response = response;69: return context;
70: } 71: 72: public static MockMvcHttpContext SetupCookie(this MockMvcHttpContext context)
73: {74: if (context.Context == null)
75: {76: throw new System.ArgumentNullException("context.Context");
77: }78: var cookie = new System.Web.HttpCookieCollection();
79: if (context.Response != null)
80: { 81: context.Response.SetupGet(x => x.Cookies).Returns(cookie); 82: }83: if (context.Request != null)
84: { 85: context.Request.SetupGet(x => x.Cookies).Returns(cookie); 86: } 87: context.Cookie = cookie; 88: 89: return context;
90: } 91: 92: public static MockMvcHttpContext SetupForm(this MockMvcHttpContext context)
93: {94: if (context.Context == null)
95: {96: throw new System.ArgumentNullException("context.Context");
97: } 98: 99: if (context.Request == null)
100: {101: throw new System.ArgumentNullException("context.Request");
102: }103: var form = new System.Collections.Specialized.NameValueCollection();
104: context.Request.SetupGet(x => x.Form).Returns(form); 105: context.Form = form;106: return context;
107: } 108: 109: public static MockMvcHttpContext SetupQuerystring(this MockMvcHttpContext context)
110: {111: if (context.Context == null)
112: {113: throw new System.ArgumentNullException("context.Context");
114: } 115: 116: if (context.Request == null)
117: {118: throw new System.ArgumentNullException("context.Request");
119: }120: var query = new System.Collections.Specialized.NameValueCollection();
121: context.Request.SetupGet(x => x.QueryString).Returns(query); 122: context.Query = query;123: return context;
124: } 125: }需要引入Moq库
useage:
controller.SetupFullContext()
Mvc Moq HttpContext,布布扣,bubuko.com
原文:http://www.cnblogs.com/czcz1024/p/3600692.html