`

10.2Asp.net MVC各层使用TDD方式

阅读更多
Asp.net MVC各层使用TDD方式

Asp.net MVC的TDD
-测试Routes
-测试Controller
-测试View helpers
-测试Views

Testing Routes
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);
routes.MapRoute(
“Default”,
“{controller}/{action}/{id}”,
new { controller = “Home”, action = “Index”, id = UrlParameter.Optional }
);
}

HTTP 测试模拟器
Moq: http://code.google.com/p/moq
using System.Web;
using Moq;
using System.Web.Routing;
[TestMethod]
public void CanMapNormalControllerActionRoute()
{
//arrange
RouteCollection routes = new RouteCollection();//保证原子性
MvcApplication.RegisterRoutes(routes);
var httpContextMock = new Mock<HttpContextBase>();
httpContextMock.Expect(c => c.Request
.AppRelativeCurrentExecutionFilePath).Returns(“~/product/list”);//测试Controller product
//act
RouteData routeData = routes.GetRouteData(httpContextMock.Object);
//assert
Assert.IsNotNull(routeData, “Should have found the route”);
Assert.AreEqual(“product”, routeData.Values[“Controller”]);
Assert.AreEqual(“list”, routeData.Values[“action”]);
Assert.AreEqual(null, routeData.Values[“id”]);
}

Testing Controllers
public ActionResult Save(string value)
{
TempData[“TheValue”] = value;
//Pretend to save the value successfully.
return RedirectToAction(“Display”);
}
[TestMethod]
public void SaveStoresTempDataValueAndRedirectsToFoo()
{
//arrange
var controller = new HomeController();
//act
var result = controller.Save(“is 42”) as RedirectToRouteResult;
//assert
Assert.IsNotNull(result, “Expected the result to be a redirect”);
Assert.AreEqual(“is 42”, controller.TempData[“TheValue”];
Assert.AreEqual(“Display”, result.Values[“action”]);
}

Testing View helpers
using System;
using System.Collections.Generic;
using System.Web.Mvc;
public static class MyHelpers
{
public static MvcHtmlString UnorderedList<T>(this HtmlHelper html,
IEnumerable<T> items)
{
throw new NotImplementedException();
}}
[TestMethod]
public void UnorderedListWithNullHtmlThrowsArgumentException()
{
try{
MyHelpers.UnorderedList(null, new int[] { });
Assert.Fail();}
catch (ArgumentNullException)
{return;}}
//测试通不过 没有NullException

Testing Views
-不由TDD进行测试

用户体验

2011-4-23 12:30 danny
分享到:
评论

相关推荐

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

    "Pro ASP.NET MVC 5" 不仅介绍了基础概念,还涵盖了高级主题,如TDD(测试驱动开发)、持续集成和部署策略。这本书是ASP.NET MVC 开发者的重要参考资料,通过它,你可以深入掌握这个框架,并不断提升自己的技能。 ...

    asp.net mvc 示例项目

    - **路由(Routing)**:ASP.NET MVC使用路由系统来确定如何将HTTP请求映射到控制器和动作。默认路由配置可以按照`/{controller}/{action}/{id}`模式解析,但可以根据需要自定义。 - **动作过滤器(Action Filters...

    ASP.NET MVC5 编程实战.pdf

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

    ASP.NET MVC 5 网站开发之美

    6. **Entity Framework**:通常与ASP.NET MVC一起使用的ORM框架,可以帮助开发者以面向对象的方式操作数据库,减少了与SQL交互的复杂性。 7. **单元测试与TDD**:ASP.NET MVC 5 支持测试驱动开发(TDD),其设计...

    【免费】ASP.NET MVC5 高级编程[附源码].rar

    ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...

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

    12. **单元测试与TDD(Test-Driven Development)**:ASP.NET MVC的解耦特性使得编写单元测试变得容易,有利于实践TDD,提高代码质量。 在"兼容VS2008/2010的ASP.NET MVC开发实战源码完整版"中,你可以通过实际代码...

    ASP.NET MVC4开发指南(带目录)

    8. **Entity Framework**:ASP.NET MVC4常与Entity Framework搭配使用,它是一个ORM(对象关系映射)工具,简化了数据库操作,使得开发者可以使用C#对象直接操作数据库。 9. **Globalization and Localization**:...

    ASP.NET MVC 5高级编程 第5版(中文版)

    ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...

    ASP.NET MVC 5高级编程 第5版_PDF电子书下载 带书签目录 高清完整版

    4. **Entity Framework**:作为默认的数据访问层,Entity Framework在ASP.NET MVC 5中扮演重要角色。它允许开发者以面向对象的方式操作数据库,通过实体类和上下文来简化数据访问。本书会介绍如何使用EF进行数据库...

    一个完整的asp.net mvc架构网站实例

    在ASP.NET MVC中,模型通常由数据实体类和业务服务层组成。数据实体类代表数据库中的表或对象,而业务服务层则负责处理与数据交互的逻辑。 2. **视图(View)**:视图是用户看到并与其交互的部分,通常由HTML和...

    ASP.NET MVC使用JQuery系列

    在这个"ASP.NET MVC使用JQuery系列"中,我们可以期待学习到以下关键知识点: 1. **ASP.NET MVC基础**:了解MVC模式的核心概念,包括模型(Model)、视图(View)和控制器(Controller)。学习如何创建MVC项目,理解...

    Professional ASP.NET MVC 2

    《Professional ASP.NET MVC 2》是一本深入探讨ASP.NET MVC框架第二版的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等多位业界专家共同编写。这本书旨在帮助读者全面理解并...

    asp.net mvc4+汉化包

    10. **测试驱动开发(TDD)**:ASP.NET MVC4鼓励采用TDD方法,通过提供模拟对象和依赖注入等机制,简化单元测试和集成测试。 11. **NuGet包管理器**:Visual Studio 2010集成了NuGet,使得安装、更新和管理第三方库变...

    ASP.NET MVC5网站开发之美+CMS范例源代码

    7. **Entity Framework**:ASP.NET MVC5通常配合Entity Framework进行数据访问,这是一个ORM(对象关系映射)框架,使得开发者可以使用面向对象的方式操作数据库,减少对SQL的直接依赖。 8. **CMS范例**:CMS(内容...

    asp.net MVC4.0安装包

    ASP.NET MVC 4.0 是一个用于构建动态网站的开源框架,由微软开发,它集成了ASP.NET Web Forms和Web Pages的功能,同时引入了模型-视图-控制器(MVC)设计模式,提供了更灵活的开发方式。在这个“asp.net MVC4.0...

    基于asp.net mvc的开源网站管理系统

    1. **ASP.NET MVC架构**:ASP.NET MVC是一个轻量级的、模型驱动的框架,它支持测试驱动开发(TDD),并提供了对RESTful风格的URL路由的支持。模型层负责业务逻辑和数据处理,视图层负责展示数据,控制器层接收用户...

    Asp.net Mvc 1.0

    Asp.NET MVC 1.0设计时考虑了测试驱动开发(TDD),支持单元测试和集成测试。由于解耦的架构,可以很容易地对控制器和模型进行单元测试。 **10. 国际化(Internationalization)** 框架内置了对多语言的支持,允许...

    ASP.NET MVC3 安装包

    8. **改进的测试支持**:ASP.NET MVC3增强了对单元测试和集成测试的支持,使得测试驱动开发(TDD)更加方便。 9. **全局资源管理**:ASP.NET MVC3提供了一个更强大的全局资源管理系统,方便进行多语言本地化。 10. *...

    asp.net MVC2教程

    测试驱动开发(TDD)在ASP.NET MVC2中得到很好的支持。由于解耦的架构,你可以很容易地对控制器进行单元测试,确保代码质量。同时,模拟(Mocking)和依赖注入(Dependency Injection)技术可以帮助你隔离组件进行...

    ASP.NET MVC in Action.pdf

    《ASP.NET MVC in Action》是一本专为开发者深入理解ASP.NET MVC框架而编写的英文原版书籍。ASP.NET MVC(Model-View-Controller)是一种基于模式的、用于构建可测试和可维护的Web应用程序的开源框架。这本书全面...

Global site tag (gtag.js) - Google Analytics