2010-10-21 30 views
0

我使用MVCContrib Fluent路由測試測試路由時遇到問題。測試失敗,但應用程序識別路線。mvcContrib在asp.net中流暢的路由測試問題mvc

讓我解釋一下....

我在寄存器中的以下路線(爲了顯示)

routes.MapRoute(
       "PurchaseUnitsPaged", 
       "PurchaseUnits/Page{page}", 
       new { controller = "PurchaseUnits", action = "Index", page = 1 }, 
       new { page = @"\d+" } 
       ); 


routes.MapRoute(
       "PurchaseUnit", 
       "PurchaseUnits/{unitname}", 
       new { controller = "PurchaseUnits", action = "Show" } 
      ); 

路由管道正確發送請求到指數路線1和顯示爲路線2.

但是,當我測試使用MVCContrib流利班的路由我得到一個測試路由1失敗。

測試是:因爲期望是指數但實際是顯示

"~/PurchaseUnits/Page{page}".ShouldMapTo<PurchaseUnitsController>(x=> x.Index(1)); 

測試失敗。

關於爲什麼流利的類不能識別正確的路由,但mvc路由在實際應用中工作的任何想法?或者沒有提出任何關於我如何調整我的測試或路線以使我能夠全面測試的建議?

回答

2

您的測試應該是:

"~/PurchaseUnits/Page1".ShouldMapTo<PurchaseUnitsController>(x=> x.Index(1)); 

的URL是~/PurchaseUnits/Page1而不是~/PurchaseUnits/Page{page}

+0

爲答案Darin乾杯,工作。 雖然我有些困惑,因爲我使用以下測試測試問題中提到的第二條路線 「〜/ PurchaseUnits/{unitname}」。Route().ApplicationUnitsController>(x => x.Show ( 「{}單元名」)); – ActualAl 2010-10-21 11:52:28

+0

這是因爲「{unitname}」匹配「{unitname}」。如果您的原始測試是「〜/ PurchaseUnits/Page {page}」。ShouldMapTo (x => x.Index(「{page}」));它(編輯:不會)已經工作,但顯然索引需要一個int而Show需要一個字符串。實際上,如果仔細查看代碼,「〜/ PurchaseUnits/Page {page}」與您的第一條路線不匹配,因爲值「{page}」與「\ d +」不匹配,而是會下降到下一個路由PurchaseUnitsController.Show(「Page {page}」)。 – ARM 2010-10-21 15:51:00