Asp.net

如何在 ASP.NET MVC 中測試自定義模型綁定器?

  • October 31, 2008

我在我們的 ASP.NET MVC 應用程序中編寫了一些自定義模型綁定器(實現 IModelBinder)。我想知道對它們(活頁夾)進行單元測試的好方法是什麼?

我是這樣做的:

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);
}

然後我只是將 bindingContext 變數傳遞給實現 IModelBinder 介面的對象的 BindModel 方法。

引用自:https://stackoverflow.com/questions/253574