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
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
发表评论
-
10.1TDD简介
2011-04-30 23:09 556MVC中的测试驱动开发 为什么需要TDD TDD的由来 它 ... -
9、MVC程序安全限定
2011-04-29 22:14 1809常见网络安全攻击隐患 针对Asp.net MVC防御体系 安 ... -
8.2ASP.NET MVC2使用Ajax类库实例
2011-04-29 13:05 922ASP.NET MVC2使用Ajax类库实例 .net fo ... -
8.1Ajax类库介绍
2011-04-28 09:12 883在ASP.NET MVC中使用 -Microsoft ASP. ... -
7.2自定义开发Filter
2011-04-27 16:04 623Custom Filters ➤IAuthorization ... -
7.1Filter的使用
2011-04-26 22:20 499Filter的使用 -对Action的附加说明 Asp.n ... -
6.3Action的调用与属性
2011-04-26 09:43 664Action的调用与属性 1、唤起Action R ... -
6.2ActionResult的使用
2011-04-25 19:14 681ActionResult public abstract c ... -
6.1Controller类的基本构成
2011-04-25 09:17 667关于Controller Controller是什么? C ... -
5.6在Webform中使用routing
2011-04-23 22:48 667在Webform中使用routing 在Asp.net 4中使 ... -
5.5URL和Action匹配的秘密
2011-04-22 09:11 899Routes是如何把URL映射为Action -请求路由管道 ... -
5.4使用routing生成URL
2011-04-21 11:05 597使用routing生成URL URL生成器概述 1、质询每个 ... -
5.3使用Routes
2011-04-20 09:11 7385.3使用Routes 注册Area Route publi ... -
5.2Routes匹配URL的工作方式
2011-04-19 08:55 850URL的匹配规则 -site/{controller}/{ac ... -
5.1Url和Routes介绍
2011-04-17 12:05 6475.1Url和Routes介绍 关于Urls -域名好记好拼 ... -
4、View引擎介绍
2011-04-16 22:03 647View引擎介绍 Request =>Routing= ... -
3、HtmlHelper类(续)
2011-04-16 13:41 650HtmlHelper类(续) Html.TextArea 用 ... -
2、HtmlHelper类
2011-04-15 22:33 1101HtmlHelper类 <%Html. MVC1 & ... -
1、View层
2011-04-15 09:06 627ViewDataDictionary类 View 负责输出 ...
相关推荐
"Pro ASP.NET MVC 5" 不仅介绍了基础概念,还涵盖了高级主题,如TDD(测试驱动开发)、持续集成和部署策略。这本书是ASP.NET MVC 开发者的重要参考资料,通过它,你可以深入掌握这个框架,并不断提升自己的技能。 ...
- **路由(Routing)**:ASP.NET MVC使用路由系统来确定如何将HTTP请求映射到控制器和动作。默认路由配置可以按照`/{controller}/{action}/{id}`模式解析,但可以根据需要自定义。 - **动作过滤器(Action Filters...
ASP.NET MVC5 是微软开发的一款用于构建Web应用程序的框架,它结合了模型-视图-控制器(MVC)设计模式、ASP.NET Web Forms组件以及Web API功能,为开发者提供了更灵活、可测试的Web开发解决方案。这本书《ASP.NET ...
6. **Entity Framework**:通常与ASP.NET MVC一起使用的ORM框架,可以帮助开发者以面向对象的方式操作数据库,减少了与SQL交互的复杂性。 7. **单元测试与TDD**:ASP.NET MVC 5 支持测试驱动开发(TDD),其设计...
ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...
12. **单元测试与TDD(Test-Driven Development)**:ASP.NET MVC的解耦特性使得编写单元测试变得容易,有利于实践TDD,提高代码质量。 在"兼容VS2008/2010的ASP.NET MVC开发实战源码完整版"中,你可以通过实际代码...
8. **Entity Framework**:ASP.NET MVC4常与Entity Framework搭配使用,它是一个ORM(对象关系映射)工具,简化了数据库操作,使得开发者可以使用C#对象直接操作数据库。 9. **Globalization and Localization**:...
ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的...
4. **Entity Framework**:作为默认的数据访问层,Entity Framework在ASP.NET MVC 5中扮演重要角色。它允许开发者以面向对象的方式操作数据库,通过实体类和上下文来简化数据访问。本书会介绍如何使用EF进行数据库...
在ASP.NET MVC中,模型通常由数据实体类和业务服务层组成。数据实体类代表数据库中的表或对象,而业务服务层则负责处理与数据交互的逻辑。 2. **视图(View)**:视图是用户看到并与其交互的部分,通常由HTML和...
在这个"ASP.NET MVC使用JQuery系列"中,我们可以期待学习到以下关键知识点: 1. **ASP.NET MVC基础**:了解MVC模式的核心概念,包括模型(Model)、视图(View)和控制器(Controller)。学习如何创建MVC项目,理解...
《Professional ASP.NET MVC 2》是一本深入探讨ASP.NET MVC框架第二版的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等多位业界专家共同编写。这本书旨在帮助读者全面理解并...
10. **测试驱动开发(TDD)**:ASP.NET MVC4鼓励采用TDD方法,通过提供模拟对象和依赖注入等机制,简化单元测试和集成测试。 11. **NuGet包管理器**:Visual Studio 2010集成了NuGet,使得安装、更新和管理第三方库变...
7. **Entity Framework**:ASP.NET MVC5通常配合Entity Framework进行数据访问,这是一个ORM(对象关系映射)框架,使得开发者可以使用面向对象的方式操作数据库,减少对SQL的直接依赖。 8. **CMS范例**:CMS(内容...
ASP.NET MVC 4.0 是一个用于构建动态网站的开源框架,由微软开发,它集成了ASP.NET Web Forms和Web Pages的功能,同时引入了模型-视图-控制器(MVC)设计模式,提供了更灵活的开发方式。在这个“asp.net MVC4.0...
1. **ASP.NET MVC架构**:ASP.NET MVC是一个轻量级的、模型驱动的框架,它支持测试驱动开发(TDD),并提供了对RESTful风格的URL路由的支持。模型层负责业务逻辑和数据处理,视图层负责展示数据,控制器层接收用户...
Asp.NET MVC 1.0设计时考虑了测试驱动开发(TDD),支持单元测试和集成测试。由于解耦的架构,可以很容易地对控制器和模型进行单元测试。 **10. 国际化(Internationalization)** 框架内置了对多语言的支持,允许...
8. **改进的测试支持**:ASP.NET MVC3增强了对单元测试和集成测试的支持,使得测试驱动开发(TDD)更加方便。 9. **全局资源管理**:ASP.NET MVC3提供了一个更强大的全局资源管理系统,方便进行多语言本地化。 10. *...
测试驱动开发(TDD)在ASP.NET MVC2中得到很好的支持。由于解耦的架构,你可以很容易地对控制器进行单元测试,确保代码质量。同时,模拟(Mocking)和依赖注入(Dependency Injection)技术可以帮助你隔离组件进行...
《ASP.NET MVC in Action》是一本专为开发者深入理解ASP.NET MVC框架而编写的英文原版书籍。ASP.NET MVC(Model-View-Controller)是一种基于模式的、用于构建可测试和可维护的Web应用程序的开源框架。这本书全面...