Asp.net Mvc Framework 十(测试方法及Filter的示例)

顺遍说一下建立测试的方法

本身Asp.netMvc是提供有测试功能的

在新建Asp.netMVCApplication时,点击确定,会跳出一个Create Project Test的询问

如果选Yes就自动建立一个 "工程名+Test"的测试工程

测试工程要引用Rhino.Mock(最新版本3.4)这一开源项目(下载地址http://www.ayende.com/projects/rhino-mocks/downloads.aspx)

测试代码没有什么好说的了,看了示例自然了解,Scott的MockHelpers使测试更加方便

可以利用类似以下代码进行测试

[TestMethod]
    public void Index() {
      HomeController home = new HomeController();
      var viewengin = new FakeViewEngine();
      home.ViewEngine = viewengin;
      MockRepository mock = new MockRepository();
      using (mock.Record()) {
        mock.SetFakeControllerContext(home);
      }
      using (mock.Playback()) {
        home.Index();
        Assert.AreEqual("Index", viewengin.ViewContext.ViewName);
      }
    }

示例说明

示例中有个登录功能

有两个页面

/Post/Index页面只有登录后才能查看

/Post/Post页面只有登录后的admin用户才能查看

否则就会Error

在验证登录时我写了一个扩展方法

public static class ControllerExtension
  {
    public static bool IsPost(this Controller controller) {
      return controller.Request.Form.Count > 0;
    }
  }

登录时我使用Session来保存用户登录信息

所有用户信息我在 Global中进行初始化

RegisterRoutes(RouteTable.Routes);
//将Application代替数据库用
Application["Posts"] = new List<Post>();//一个账号集合
Application["Accounts"] = new List<Account>();//一个帖子集合
//初始化两个账号
List<Account> la = Application["Accounts"] as List<Account>;
la.Add(new Account()//这个是管理员
{
  Username = "admin",
  Password = "admin"
});
la.Add(new Account()//这个是普通用户
{
  Username = "user",
  Password = "user"
});

具体的内容看代码就行了,感冒了...很是难受...手纸用了三卷了....

示例下载

时间: 2024-10-23 07:12:00

Asp.net Mvc Framework 十(测试方法及Filter的示例)的相关文章

Asp.net Mvc Framework 十二 Castle扩展

由于Monorail是.net下MVC的先驱所以 Asp.net MVC理所当然要支持老的Castle用户 在Asp.net MVC扩展包中就提供了对Castle的支持与兼容 虽然这个扩展还有很多BUG与不足,但已从其中窥见Asp.net的扩展性之一斑 扩展的下载地址:http://www.codeplex.com/MVCContrib 其中的\Samples\MvcContrib.Samples.NVelocityViewFactory\就是一个Castle使用NVelocity为脚本的示例

ASP.NET MVC Framework 系列

序言 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,从前在ASP.NET下我们只能依靠Monorail来实现ASP.NET下无控件的MVC,但是现在ASP.NET 下的MVC已经成为现实. 本文只想让大家更直观地认知ASP.NET MVC,如果语言有所不当,还望大家海涵.当然,如果文中有所纰漏还希望大家及时指出,我也好做及时的修改.在下本着对初学者负责的态度来书写本系列中的各篇文章,但期间的恒心与毅力相信过来的人更加明白,所以如果书写有误希望大家谅解. ASP.NET MVC 正

[转]Asp.net Mvc Framework 系列

  from:http://www.cnblogs.com/chsword/archive/2008/03/10/1099474.html 做为设计模式的王者,MVC在众多领域都成为良好的模型的代名词,前日我们只能靠Monorail来实现Asp.net的Mvc的而且确Asp.netMvc已经成为现实 本文只想让大家更直观地认知Asp.net Mvc,如果语言有所不当,还望先贤海涵,当然,如果文中有所纰漏还希望大家指出 尽量本着对初学者负责的态度来写,但期间的恒心与毅力相信过来的人更加明白,所以如

ASP.NET MVC Framework与WCSF中MVP模式的比较

概述 MVC模式已经出现了几十年了,在GUI领域已经得到了广泛的应用,由于微软ASP.NET MVC Framework的出现,致使MVC一度成为.NET 社区的热名话题.作为MVC的变种MVP模式,也已经出现好几年了,在微软模式与实践小组提供的Web Client Software Factory中,给出了实现 MVP模式的应用程序最佳实践,本文将试着对这两种实现比较一二. MVC(Model-View-Controller,模型-视图-控制器)模式是80年代 Smalltalk-80出现的一

ASP.NET MVC Framework体验(5):路径选择(URL Routing)

概述 在传统的ASP.NET应用程序中,发生一个请求之后将映射到一个.aspx文件,且会 对应到一个具体的物理aspx文件.ASP.NET MVC Framework中,进入一个请求之后,不再是 映射到.aspx文件,而是由MVC Framework中提供的路径选择引擎,映射到正确的Controller 和Action执行请求.ASP.NET MVC Framework中URL路径映射规则定义在Global.asax中,这 在一定程序上带来了很多的灵活性,如果想要修改URL应用结构的话,只需要修

ASP.NET MVC Framework体验(4):控制器

概述 在MVC中,Controller用来处理和回应用户的交互,选择使用哪个View来进行显 示,需要往视图中传递什么样的视图数据等.ASP.NET MVC Framework中提供了IController 接口和Controller基类两种类型,其中在Controller提供了一些MVC中常用的处理,如定位 正确的action并执行.为action方法参数赋值.处理执行过程中的错误.提供默认的 WebFormViewFactory呈现页面.IController只是提供了一个控制器的接口,如果

ASP.NET MVC Framework体验(3):表单提交

概述 在前面的两篇文章总,我们分别做了一个简单的ASP.NET MVC的例子和进行数据 的绑定,在本文中,将通过ASP.NET MVC Framework实现表单的提交,你可以看到,在这里 有多种方法来获取表单数据,可以自动映射.通过Request对象获取等. 实现新增数 据 1.这里我们还采用上一篇做过的Blog示例(在后面的文章中,我将一直使用该示例) ,在这之前,先修改一下上次示例中的BlogRepository,为其增加一个Add方法: public void Add(Post post

ASP.NET MVC Framework体验(2):显示列表数据

概述 ASP.NET WebForm下,显示列表数据,经常会使用服务器控件GridView. DataList等.在ASP.NET MVC Framework中,我们有两种方式进行显示数据,一是使用行内 代码,即通过循环视图数据使用<%=%>标记进行呈现:二是使用服务器控件,同样可 以把视图数据绑定在服务器控件,如ASP.NET 3.5中的新控件ListView. 准备数据访 问 这里我们显示一个Post的列表DataContext和实体定义如下: [Database(Name="B

ASP.NET MVC Framework体验(1):从一个简单实例开始

概述 12月10日微软发布了ASP.NET 3.5扩展的预览版,在其中包括了ASP.NET MVC Framework.ASP.NET AJAX改进.ASP.NET动态数据支持.ASP.NET SIlverlight支持.以及 ADO.NET Data Services等.我也在第一时间下载下来进行了安装,体验了一下微软的 ASP.NET MVC Framework. 提起MVC,相信大家都不陌生了,这里简单的提两句,将 一个应用的实现分成三部分:模型(Model).视图(View).控制器(C