Как протестировать роутинг приложения на ASP.NET MVC? Желательно использовать минимум самописных mock- и stub-объектов.
Тестирование роутинга в ASP.NET MVC
2
Спросил
Новые ответы
1
Проект MvcContrib.TestHelper содержит классы-заглушки большинства объектов инфраструктуры ASP.NET MVC. Также есть специальные расширения специально для тестирования роутинга. Эти расширения позволяют тестировать простой роутинг вообще без самописных заглушек:
[TestFixture]
public class RoutesTester
{
[SetUp]
public void Init() /*[Инициализация теста]*/
{
RouteTable.Routes.Clear();
MvcApplication.RegisterRoutes(RouteTable.Routes);
}
[Test]
public void DefaultTest()
{
"~/aboute".Route().ShouldMapTo<InfoController>(c => c.Aboute());
}
}
Важный момент — перед каждым тестом таблица роутинга очищается и заполняется заново. За это отвечает вот этот код:
[SetUp]
public void Init()
{
RouteTable.Routes.Clear();
MvcApplication.RegisterRoutes(RouteTable.Routes);
}
Такой подход отлично работает если метод контроллера получает аргументы примитивных типов. Но если экшен принимает сложные объекты, требующие работу байндеров, то ShouldMapTo не может правильно определить параметры роутинга.