Navigation庫使得ASP.NET Web窗體更易測試

openkk 12年前發布 | 7K 次閱讀 ASP.NET

英文原文:Navigation Makes ASP.NET WebForms More Testable

Navigation 是一個庫,通過將 CRUD[1]邏輯從后置代碼文件中分離出來,從而使得 ASP.NET Web 窗體更易測試。Graham Mendick 的文章“用 Navigation 進行單元測試”介紹了一些相關功能、以及如何編寫單元測試。

這個庫是做什么的?它使得

  • 控件將被綁定到位于單獨類中的控制器方法上。
  • 導航綁定(Navigational binding)

所有位于 aspx 頁面的標記。例如,用于將 FormView 控件綁定到其控制器方法(controller method)的標記將如下所示——

<asp:FormView runat="server" DataSource DefaultMode="Edit">

<EditItemTemplate>

</EditItemTemplate>

</asp:FormView>

<asp:ObjectDataSource runat="server" SelectMethod="GetQuestion" UpdateMethod="UpdateQuestion" TypeName="Survey.SurveyController" DataObjectTypeName="Survey.Question" />

其中GetQuestionUpdateQuestion是在名為SurveyController的外部類中實現的控制器方法——它們不能直接訪問控件,而是通過 Navigation 庫將數據傳遞給它們。Survey.Question引用一個在本示例中使用的視圖模型(ViewModel)來傳輸數據。

為何說它可以簡化單元測試?因為現在,業務邏輯位于單獨的、無任何 web 特定行為的 POCO[2]類中。所以說它使得測試變得更容易。更多詳細信息請參閱此文

盡管我們已在 InfoQ 上提到過,WebForms 4.5 獲得 model binders(模型聯編程序)開箱即用(out-of-the-box)——然而這個庫允許將控制器方法放置到單獨的類中,從而取代后置代碼文件,這對于可測試性和可重用性似乎更好。如果您有興趣,可以下載 Navigation NerdDinner 演練代碼

譯注

[1] CRUD,即 Create, Read, Update, Delete 的首字母縮寫,指數據庫操作中的創建、讀取、更新、刪除。

[2] POCO,即 Plain Old CLR Object 的縮寫,簡單傳統 CLR(公共語言運行庫)對象,更多詳細信息請參閱維基百科
來自: InfoQ

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!