`
wangdeshui
  • 浏览: 256995 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何使ASP.NET MVC Controller易测试呢?

阅读更多

昨天那篇文章如何进行ASP.NET MVC 的测试,虽然通过自己写一个Fake的HttpContext,但是同时也暴露出之所以难于测试,是因为设计的代码不易测试,根据Jeffrey Zhao(老赵)的建议(我没完全看懂如何去做),我又重新试了一下,我把对httpcontext的操作全部放到一个ModelBinder里,因为那里可以处理httpcontext,而测试的时候是不执行ModelBinder

下面是实验的代码

Product类

image

ProductBinder

image

HomeController

image

记得在global.asax里注册

image

测试代码

image

很明显,测试是通过的,因为此时Action没有用到任何httpcontext的内容,处理的只是传进去的Product对象。

现在我的问题如下:

1. 很明显About的Action是通不过测试的,这里我只是使用了一个session值,难道我也需要新建一个ModerBinder,和一个类吗?这样凡是出现调用httpcontext都的新建一个Binder那Binder是不是太多了,ModelBinder是不是主要处理Form?

2. 如果不用ModelBinder怎么样即可以使用session又易测呢?

3. 虽然Action好测了,但ProductBinder如何测?

注:本文没有技术含量,为何放在首页?因为我没有搜索到相关的内容,而园子里很多人肯定有更好的方案,但是他们的时间可能很紧,我想他们能在评论里给点好的思路,文章+评论=一篇好文, 我这里就是想抛砖引玉,把他们的经验为大家引出来。

分享到:
评论

相关推荐

    asp.net MVC4 CMS

    ASP.NET MVC4 CMS 是一个基于微软的ASP.NET MVC4框架构建的内容管理系统,它提供了一种高效、可扩展的方式来管理和展示网站内容。MVC(Model-View-Controller)设计模式是其核心,它将应用程序分为三个主要组件:...

    Pro ASP.NET MVC 5 (精通ASP.NET MVC5框架) 中文+英文+配套源代码

    在ASP.NET MVC 5中,这些组件通过接口和依赖注入实现松耦合,增强了代码的可测试性和可维护性。 **ASP.NET MVC 5 的新特性** 1. **身份验证和授权** - ASP.NET MVC 5 引入了新的身份验证系统,基于Owin和Katana...

    ASP.NET MVC5

    ASP.NET MVC5强化了这种分层结构,使得开发者可以更好地实现代码分离,提高代码的可维护性和可测试性。 C#是ASP.NET MVC5的主要编程语言,它是一种类型安全、面向对象的语言,具有丰富的特性和强大的库支持。在ASP...

    Asp.Net MVC案例教程

    Asp.Net MVC是一种基于模型-视图-控制器(Model-View-Controller)设计模式的Web应用程序开发框架。它由微软公司推出,旨在提供更灵活、可维护和测试友好的方式来构建动态网站、Web应用程序和服务。本教程将通过一...

    asp.net mvc 示例项目

    ASP.NET MVC 是微软提供的一种基于模型-视图-控制器(Model-View-Controller)模式的Web应用程序开发框架。它允许开发者使用HTML、CSS和JavaScript构建动态、数据驱动的Web应用,同时提供了强大的测试支持和对现有...

    ASP.NET MVC5 编程实战.pdf

    ASP.NET MVC5 是微软开发的一款用于构建Web应用程序的框架,它结合了模型-视图-控制器(MVC)设计模式、ASP.NET Web Forms组件以及Web API功能,为开发者提供了更灵活、可测试的Web开发解决方案。这本书《ASP.NET ...

    基于ASP.NET MVC项目实例

    ASP.NET MVC(Model-View-Controller)是一种轻量级、基于组件的Web应用程序架构,它由微软开发并应用于.NET Framework中,为开发者提供了构建可测试、灵活且易于维护的Web应用的强大工具。本项目实例是针对初学者...

    ASP.NET MVC4

    ASP.NET MVC4是一个基于模型-视图-控制器(Model-View-Controller)设计模式的开源Web应用程序框架,由微软开发。这个框架为开发者提供了一种结构化的、灵活的方式来构建高效且可测试的Web应用。本教程是全英文的,...

    ASP.NET MVC 项目集合.zip

    ASP.NET MVC 是微软开发的一款用于构建动态Web应用程序的框架,它结合了ASP.NET的优势和Model-View-Controller(MVC)设计模式的灵活性。在这个"ASP.NET MVC 项目集合.zip"压缩包中,可能包含了多个ASP.NET MVC项目...

    ASP.NET MVC项目源代码设计资料

    6. **测试(Testing)**:由于MVC架构的分层特性,ASP.NET MVC项目易于编写单元测试和集成测试。开发者可以使用如NUnit、Moq或xUnit等测试框架来确保代码质量。 7. **Oxite项目**:在提供的文件列表中,"Oxite"可能...

    ASP.NET MVC 5 网站开发之美

    ASP.NET MVC 5 是微软开发的一个强大的Web应用程序框架,它结合了ASP.NET Web Forms、Model-View-Controller(MVC)设计模式以及单页应用程序(SPA)架构的优点,为开发者提供了一个高效、灵活且可测试的平台来构建...

    【全网首发】ASP.NET MVC4开发指南(附带源码)

    MVC(Model-View-Controller)模式是ASP.NET MVC4的核心设计原则,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑和数据管理,视图负责用户界面展示,控制器...

    ASP.NET MVC4 Web编程

    ASP.NET MVC4是一种基于微软.NET Framework的开源web应用程序框架,专为构建可维护性和测试性的动态网站而设计。它结合了MVC(Model-View-Controller)设计模式、ASP.NET的功能性和HTML5的新特性,提供了高效且灵活...

    基于ASP.NET MVC 2 的小程序

    ASP.NET MVC 2 是微软开发的一个用于构建动态网站的开源框架,它基于Model-View-Controller(MVC)设计模式,提供了清晰的架构,有助于分离关注点,提高代码的可测试性和可维护性。本教程将带你深入了解如何利用ASP...

    dwz框架 asp.net mvc3

    另一方面,ASP.NET MVC3是微软推出的一款基于模型-视图-控制器(Model-View-Controller)设计模式的Web应用程序开发框架。MVC3是ASP.NET MVC系列的第三个主要版本,它引入了许多新特性,如 Razor视图引擎、增强的...

    asp.net MVC4.0安装包和中文包

    这个框架结合了ASP.NET Web Forms和ASP.NET AJAX的功能,同时引入了Model-View-Controller(MVC)设计模式,使开发者能够更加灵活地进行Web应用的开发。 在ASP.NET MVC4.0中,模型(Model)代表应用程序的数据层,...

    asp.Net mvc4 实例

    10. **测试**:ASP.NET MVC4支持单元测试和集成测试,可以通过MSTest、NUnit或xUnit等测试框架编写测试用例,确保代码质量。 综上所述,使用VS2010和ASP.NET MVC4,结合SQL2008数据库,我们可以构建出功能强大、...

    Asp.net Mvc官方源代码

    7. **扩展性**:ASP.NET MVC的开源性质使其具有高度的扩展性。开发者可以自定义模型绑定器、验证器、视图引擎、输出缓存策略等,以适应特定的项目需求。 通过研究ASP.NET MVC的官方源代码,开发者不仅可以深入了解...

    ASP.NET MVC开发实战超完整源码

    ASP.NET MVC(Model-View-Controller)是一种基于微软.NET Framework的Web应用程序开发框架,它为构建可维护性和测试性更强的Web应用提供了强大的支持。在本"ASP.NET MVC开发实战超完整源码"中,我们可以深入理解并...

    asp.net mvc博客Blog源码

    6. 开发与调试:ASP.NET MVC项目通常使用Visual Studio作为开发环境,它提供了强大的调试工具,如断点、变量监视、调用堆栈查看等,便于开发和测试。 通过研究这个源码,开发者不仅可以学习到ASP.NET MVC的基本用法...

Global site tag (gtag.js) - Google Analytics