protected static void Establish(Type[] types = null, bool isAjax = true) { typeof(DispatcherControllerBase).GetField("types", BindingFlags.Static | BindingFlags.NonPublic).SetValue(null, new List <Type>()); dispatcher = Pleasure.Mock <IDispatcher>(); IoCFactory.Instance.StubTryResolve(dispatcher.Object); controller = new FakeDispatcher(); var requestBase = Pleasure.MockAsObject <HttpRequestBase>(mock => { if (isAjax) { mock.SetupGet(r => r.Headers).Returns(new NameValueCollection { { "X-Requested-With", "XMLHttpRequest" } }); } mock.SetupGet(r => r.Form).Returns(new NameValueCollection() { { "[0].Name", "Value" }, { "[1].Name", "Value" }, }); }); controller.ControllerContext = new ControllerContext(Pleasure.MockStrictAsObject <HttpContextBase>(mock => mock.SetupGet(r => r.Request).Returns(requestBase)), new RouteData(), controller); controller.ValueProvider = Pleasure.MockStrictAsObject <IValueProvider>(mock => mock.Setup(r => r.GetValue(Pleasure.MockIt.IsAny <string>())).Returns(new ValueProviderResult(string.Empty, string.Empty, Thread.CurrentThread.CurrentCulture))); var modelBinderDictionary = new ModelBinderDictionary(); var modelBinder = Pleasure.MockAsObject <IModelBinder>(mock => mock.Setup(r => r.BindModel(Pleasure.MockIt.IsAny <ControllerContext>(), Pleasure.MockIt.IsAny <ModelBindingContext>()))); foreach (var type in types.Recovery(new Type[] { })) { modelBinderDictionary.Add(type, modelBinder); } controller.SetValue("Binders", modelBinderDictionary); }