樣本下載:
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"
});
具體的內容看代碼就行了,感冒了...很是難受...手紙用了三卷了....(亂世重典)
Asp.net Mvc Framework 系列