我在我们的 ASP.NET MVC 应用程序中编写了一些自定义模型绑定(bind)器(实现 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 接口(interface)的对象的 BindModel 方法。
关于asp.net - 如何在 ASP.NET MVC 中测试自定义模型绑定(bind)器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/253574/