Модульное тестирование SiteMapNode

Кто-нибудь знает, как провести модульное тестирование SiteMapNode? Мы создаем некоторые настраиваемые элементы управления навигацией, которые отображают неупорядоченные HTML-списки из карт сайта с настраиваемыми атрибутами.

Я пытаюсь следовать тестовому подходу, но обнаружил, что SiteMapNode имеет внутренние зависимости от HttpContext. Чтобы просмотреть файл карты сайта, он настаивает на использовании виртуального пути для поиска файла карты сайта.

У меня есть карта сайта, которую я хотел бы протестировать, но я не хочу создавать свою среду модульного тестирования в веб-проекте (!)

Какие-либо предложения? Насмешка? Переопределение соответствующих членов?


person Ed Blackburn    schedule 19.11.2008    source источник


Ответы (2)


Довольно скучный вопрос, поэтому неудивительно, что он не получил ответа! Для всех, кто может столкнуться с этой проблемой, вот мое предпочтительное решение:

Я обнаружил, что лучший способ справиться с этим — загрузить физическую карту сайта в XML-документ. Затем у меня есть NavigationNodeFactory, которая проверяет и строит мое собственное составное дерево NavigationNode из XML-документа.

Мой класс NavigationNode настолько самоуверен, насколько мне нравится, и обходит проблемы, которые я обнаружил с SiteMap и SiteMapProvider, а именно плохую тестируемость для разработчиков.

person Ed Blackburn    schedule 20.11.2008

Я думаю, проблема могла заключаться в том, что, судя по вашему описанию, вы пытались сначала протестировать уже существующий класс — SiteMapNode.

Вы захотите протестировать использование узла карты сайта в своем приложении, поэтому я бы посоветовал, если вы хотите выполнять действия над классом узла карты сайта, оберните его промежуточным ISiteMapProvider или аналогичным абстракцией вашего собственное создание, и ваши пользовательские элементы управления навигацией взаимодействуют с этим.

Затем у вас может быть SiteMapNodeProvider для среды выполнения, который вызывает SiteMapNode для операций, и StubbedSiteMapProvider для ваших модульных тестов, которые передают ваши тестовые значения в пользовательские элементы управления.

person Community    schedule 20.11.2008
comment
Спасибо за ваш ответ Джастин. Это был мой первоначальный маршрут. К сожалению, заглушка SiteMaps потребовала написания слишком большого количества не-DRY-кода по вкусу из-за составного характера графа объектов. - person Ed Blackburn; 20.11.2008