una tag tabla paginacion net mvc mostrar filtro datos busqueda asp asp.net asp.net-mvc unit-testing model-binders

asp.net - tabla - tag helpers asp net core



¿Cómo probar carpetas de modelo personalizadas en ASP.NET MVC? (3)

Lo hice de esta manera:

var formElements = new NameValueCollection() { {"FirstName","Bubba"}, {"MiddleName", ""}, {"LastName", "Gump"} }; var fakeController = GetControllerContext(formElements); var valueProvider = new Mock<IValueProvider>(); var bindingContext = new ModelBindingContext(fakeController, valueProvider.Object, typeof(Guid), null, null, null, null); private static ControllerContext GetControllerContext(NameValueCollection form) { Mock<HttpRequestBase> mockRequest = new Mock<HttpRequestBase>(); mockRequest.Expect(r => r.Form).Returns(form); Mock<HttpContextBase> mockHttpContext = new Mock<HttpContextBase>(); mockHttpContext.Expect(c => c.Request).Returns(mockRequest.Object); return new ControllerContext(mockHttpContext.Object, new RouteData(), new Mock<ControllerBase>().Object); }

Y luego acabo de pasar en la variable bindingContext al método BindModel del objeto que implementa la interfaz IModelBinder.

He escrito algunos archivos de carpetas personalizados (que implementan IModelBinder) en nuestra aplicación ASP.NET MVC. Me pregunto ¿cuál es un buen enfoque para probarlos (carpetas)?


Esta es una forma sencilla de no burlarse que escribí para usted en mi blog, suponiendo que usa el ValueProvider y no el HttpContext: http://www.hanselman.com/blog/SplittingDateTimeUnitTestingASPNETMVCCustomModelBinders.aspx

[TestMethod] public void DateTime_Can_Be_Pulled_Via_Provided_Month_Day_Year_Hour_Minute_Second_Alternate_Names() { var dict = new ValueProviderDictionary(null) { { "foo.month1", new ValueProviderResult("2","2",null) }, { "foo.day1", new ValueProviderResult("12", "12", null) }, { "foo.year1", new ValueProviderResult("1964", "1964", null) }, { "foo.hour1", new ValueProviderResult("13","13",null) }, { "foo.minute1", new ValueProviderResult("44", "44", null) }, { "foo.second1", new ValueProviderResult("01", "01", null) } }; var bindingContext = new ModelBindingContext() { ModelName = "foo", ValueProvider = dict }; DateAndTimeModelBinder b = new DateAndTimeModelBinder() { Month = "month1", Day = "day1", Year = "year1", Hour = "hour1", Minute = "minute1", Second = "second1" }; DateTime result = (DateTime)b.BindModel(null, bindingContext); Assert.AreEqual(DateTime.Parse("1964-02-12 13:44:01"), result); }


dict podría ser refactorizado de esta manera

FormCollection form = new FormCollection { { "month1", "2" }, { "day1", "12" }, { "year1", "1964" }, { "hour1", "13" }, { "minute1", "44" }, { "second1", "01" } }; var bindingContext = new ModelBindingContext() { ModelName = "foo", ValueProvider = form.ToValueProvider() };