1. 程式人生 > >Asp.net Mvc Framework 十(測試方法及Filter的示例)

Asp.net Mvc Framework 十(測試方法及Filter的示例)

示例下載:
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]
        
publicvoid 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
在驗證登入時我寫了一個擴充套件方法
publicstaticclass ControllerExtension
    
{
        
publicstaticbool 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 系列