ASP.NET MVC3實戰系列(二):面向介面編程,提高系統可測試性。

來源:互聯網
上載者:User

ASP.NET MVC 使用MVC的架構,其架構本身就使應用程式更易於測試,但這並不意味著可以隨便寫出易於測試的程式。我們都知道單元測試在系統開發有著很重要的作用。

我們來寫這樣的一個程式,系統擷取某個壞男人的情人資訊,然後發送給他老婆。

1. 建一個Lover的ASP.NET MVC3項目

我們需要1個實體類,儲存男人,情人和老婆的資訊。

 

然後我們需要一個LoverRepository來擷取某個人的情人,這裡就想成從資料庫取資料。我們這裡先返回固定的資料

 

建一個HomeController, 代碼如下

建立一個Index視圖

建立一個Send 視圖

F5運行

2. 重構這個小程式。

我們可以看到如果我們想測試HomeController裡Send的這個Action,如果LoverRepository沒有開發完或者出錯,我們將無法測試。

可以看到單元測試出錯了。

那麼我們如何來隔離LoveRepository呢?我們都知道面向介面編程可以提高系統的可測試性。

開啟LoveRepository.cs, 右鍵重構為介面:

為了容易測試,我們把這個介面屬性設為公有。

這時我們再自己可以實現一個FakeRepository繼承ILoverRepository這個介面,這樣就測試通過了。

但是這樣有幾個問題:

第一就是我們暴露了HomeController的repository的屬性。

第二我們在類內部new了一個對象,假如我們這次是從資料庫中得到Lovers,下次想從檔案或者Web Service裡去資料時,我們必須修改Controller裡的代碼。

第三我們需要自己寫一個Fake類。

要想解決這些問題,下一節我們將討論ASP.NET MVC3裡如何使用IOC來解決對象的依賴問題。

 

最後,打個小廣告:西安分公司急聘如下人員,有意者直接聯絡我,左邊側欄有我的連絡方式,部落格園招聘頻道有詳細描述 http://job.cnblogs.com/offer/13800/

基本要求:
4年以上C#開發經驗, .Net基礎紮實,熟練使用.Net3.5新特性。
精通ASP.NET Web開發。
熟練使用WCF.
熟練使用ORM,LINQ TO SQL /Entity Framework或者NHibernate.
熟練使用JavaScript, JQuery.
熟悉Web標準,熟悉HTML&CSS.
熟悉SQL Server, 熟練掌握T-SQL,預存程序。
英語讀寫熟練,可以看懂英文需求,可以和客戶流暢的用英語文字溝通(MSN/Skype)
良好的編碼習慣。

熟悉下面任意一項優先:
熟悉敏捷開發人員優先
英語聽說熟練者優先
熟悉ASP.NET MVC者優先。
熟悉WPF者優先
熟悉Silverlight優先
有系統架構經驗者優先,有單元測試或者TDD經驗者優先。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.