asp.net - 如何在 ASP.NET MVC 中测试自定义模型绑定(bind)器?

标签 asp.net asp.net-mvc unit-testing model-binders

我在我们的 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/

相关文章:

python - 在单元测试期间抑制引发错误?

c++ - 谷歌模拟 : Mocking parent class?

asp.net - 何时在XmlDocument或XmlTextReader上使用XPath?

javascript - 如何在 .net 核心应用程序中使用 post 方法将 javascript 值传递给 Controller ​​?

c# - ASP.NET MVC : The model item passed into the dictionary is of type 'ClassA' , 但此字典需要类型为 'ClassA' 的模型项

javascript - 使用 Knockoutjs 在客户端添加和删除项目

angular - 如何在 Angular 4 中测试特定的 spec.ts 文件?

asp.net - 如何清理整个asp.net页面的代码隐藏?

javascript - 当包含为 asp 文件时,Bootstrap Dropdowns 将展开,但不会关闭

c# - 如何隐藏一个asp :Image contained within a Repeater if the image field in the database is set to null