2010-04-20 2 views
4

Я использую MVC 2 с областями. Чтобы проверить маршрутизацию, я использую MvcContrib.MVCContrib Testing Route with Areas

Это тестирование кода:

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

Я не знаю, как назвать определение маршрутизации, которые хранятся в районах. Calling AreaRegistration.RegisterAllAreas() не является вариантом, поскольку он дает исключение.

Thanks Ревин

ответ

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.

Смежные вопросы