使用PortalSiteMapProvider的单元测试代码

时间:2009-02-06 10:50:30

标签: c# visual-studio-2008 sharepoint unit-testing

我有一个使用PortalSiteMapProvider来查询Sharepoint导航层次结构的Web部件,但是为该代码编写的单元测试失败,因为代码在Sharepoint上下文之外运行,因此没有可用的站点地图提供程序。

我已经确定了两种解决这种困境的替代方法:

  • 因为Sharepoint基本上是一个精心设计的ASP.Net应用程序,所以应该可以使用HostType和UrlToTest测试属性在Sharepoint上下文中运行测试
  • 使用mock而不是PortalSiteMapProvider

这些中的任何一个是可行的还是有更好的第三种选择?

4 个答案:

答案 0 :(得分:2)

Microsoft模式和实践人员建议使用TypeMock来帮助单元测试Sharepoint

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

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

不幸的是,这不是一个免费的解决方案。

答案 1 :(得分:0)

您将无法模拟SPRequest类,它是一个内部类。我面临同样的问题。 一种方法是尝试将您的代码与SharePoint API隔离开来,这不太好。

答案 2 :(得分:0)

BTW Typemock的产品价格较低,尤其是SharePoint

答案 3 :(得分:-1)

第二种选择更合适。摘要PSMP并将其隐藏在IPortalSiteMapProvider后面,然后在单元测试中模拟它。为了桥接接口和具体实现,您可以编写精简委托适配器或使用duck typing