Код модульного тестирования, использующий PortalSiteMapProvider - PullRequest
1 голос
/ 06 февраля 2009

У меня есть веб-часть, которая использует PortalSiteMapProvider для запроса иерархии навигации Sharepoint, но модульные тесты, написанные для этого кода, не выполняются, поскольку код выполняется вне контекста Sharepoint, и, следовательно, поставщики карты сайта не имеется.

Я определил два альтернативных способа решения этой дилеммы:

  • Поскольку Sharepoint является в основном сложным приложением ASP.Net, должна быть возможность запускать тесты в контексте Sharepoint с атрибутами теста HostType и UrlToTest
  • Использовать макет вместо PortalSiteMapProvider

Является ли один из них жизнеспособным или есть лучший третий вариант?

Ответы [ 4 ]

2 голосов
/ 06 февраля 2009

Парни из Microsoft Patterns and Practices рекомендуют TypeMock, чтобы помочь модульному тестированию Sharepoint

http://msdn.microsoft.com/en-us/library/dd203468.aspx

http://www.typemock.com/sharepointpage.php

К сожалению, не бесплатное решение.

0 голосов
/ 15 июля 2009

BTW Typemock имеют продукт по сниженной цене, особенно для SharePoint .

0 голосов
/ 27 мая 2009

Вы не сможете смоделировать класс SPRequest, который является внутренним классом. Я сталкиваюсь с теми же проблемами. Один из подходов состоит в том, чтобы попытаться изолировать свой код от API-интерфейса SharePoint, а это не так приятно.

0 голосов
/ 06 февраля 2009

Второй вариант более уместен. Абстрагируйся от PSMP и скрой его за IPortalSiteMapProvider, а затем смейся над ним в модульном тесте. Чтобы связать интерфейс и конкретную реализацию, вы можете написать тонкий делегирующий адаптер или использовать duck typing .

...