2008-11-19 4 views
3

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

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

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

Любые предложения? Дразнящий? Переопределение соответствующих членов?

ответ

2

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

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

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

0

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

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

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

+0

Благодарим за отзыв Джастин. Это был мой первоначальный маршрут. К сожалению, в этом случае SiteMaps записывает далеко не полный код DRY для удобства из-за сложной природы графа объектов. – 2008-11-20 15:39:39