您的位置:首页 > 编程语言 > ASP

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

2008-12-02 12:37 447 查看
示例下载:
http://files.cnblogs.com/chsword/MyTestMvc.rar

顺遍说一下建立测试的方法
本身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"


});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: