2010-04-20 67 views
4

我使用MVC 2與區域。爲了測試路由,我使用MvcContrib。MVCContrib測試與區域路線

這是測試代碼:

[Test] 
public void Home() 
{ 
    MvcApplication.RegisterRoutes(RouteTable.Routes); 
    "~/".ShouldMapTo<HomeController>(x => x.Login("Nps")); 
} 

我不知道如何調用存儲在區域路由定義。 調用AreaRegistration.RegisterAllAreas()不是一個選項,因爲它提供了一個例外。

感謝 勒萬

回答

5

這是我做的方式這對我來說

[Test] 
public void VerifyRouteMapFor_Test_Area_TestController() 
{ 
    RouteTable.Routes.Clear(); 

    var testAreaRegistration = new testAreaRegistration(); 
    testAreaRegistration.RegisterArea(new AreaRegistrationContext(testAreaRegistration.AreaName, RouteTable.Routes)); 

    "~/test/index".ShouldMapTo<testController>(x => x.Index()); 
} 
1

不需要調用RegisterAllAreas,你應該叫你正在測試該區域的AreaRegistration。 RegisterAllAreas掃描所有加載的程序集,因此測試結果太多。我會手動設置測試。如果它仍然通過,例外發布在這裏或mvccontrib郵件列表。我相信在某些情況下,需要更新TestHelper以更好地支持這些領域。我們尚未向測試助手添加任何特定區域支持。

0

工程爲單元測試,也許這是最好的只是做一個區域。但是對於集成測試,您需要測試上下文中的所有路由,即imo。