2010-01-29 44 views
1

這是ASP.NET MVC V1(尚未使用,將V2)使mvccontrib testhelper工作與獲得automapped對象

我有一個路由條目類似這樣的路線數據的操作:

  routes.MapRoute(
      "Srp", 
      "soeg-{searchQuery}/{listingType}", 
      new { controller = "Srp", action = "Search", listingType = string.Empty }, 
      new { listingType = "privat|forhandler|"} 
      ); 

和一個動作來配合它:

 public ActionResult Search(QueryParameters queryParameters) 

它完美 - MVC框架知道到SEARCHQUERY和listingType映射到QueryParameters的兩個屬性名稱相同的對象。

我的問題是單元測試。我正在使用Mvccontrib項目和LOVING ShouldMapTo方法:

 [Test] 
    public void RegisterSrpRoutes_SoegWithKeywordAndValidListingType_ShouldMapCorrectly() 
    { 
     var queryParameters = new QueryParameters {SearchQuery = "hest", ListingType = "privat"}; 
     "~/soeg-hest/privat".ShouldMapTo<SrpController>(controller => controller.Search(queryParameters)); 
    } 

雖然它不工作!我曾經對我的動作像這樣的具體參數:

 public ActionResult Search(string searchQuery, string listingType) 

其工作(顯然是單元測試會嘗試和地圖兩個參數(字符串搜索),而不是這一個對象

沒有人有一個想法如何解決問題,回到編寫所有屬性作爲參數的短小。mvc自動映射屬性的岩石,但我希望有一些方法,我可以有mvccontribs testhelper與該工作以及

回答

1

自從我查看這段代碼以來已經有一段時間了,但我相信它會對你的參數進行一次.Equals調用結束。對於原始類型來說,這很容易,但對於你的參數對象,嘗試實現Equals覆蓋並讓它測試每個屬性的相等性。

+0

我認爲你是對的。這有點痛苦和坦率地說,我想我只是要跳過ShouldMapTo而不是*嗅探* – 2010-02-08 12:17:07

相關問題