【问题标题】:Unit Testing SiteMapNode单元测试站点地图节点
【发布时间】:2008-11-19 10:42:40
【问题描述】:

有人知道如何对 SiteMapNode 进行单元测试吗?我们正在构建一些自定义导航控件,它们可以使用自定义属性呈现站点地图中的无序 html 列表。

我正在尝试遵循测试优先的方法,但我发现 SiteMapNode 对 HttpContext 具有内部依赖关系。为了遍历站点地图文件,它坚持使用虚拟路径来查找站点地图文件。

我已经构建了一个站点地图,我想对其进行测试,但我不想在 Web 项目中创建我的单元测试环境(!)

有什么建议吗?嘲讽?覆盖相关成员?

【问题讨论】:

    标签: unit-testing tdd mocking sitemap


    【解决方案1】:

    一个相当无聊的问题,所以没有得到回应也就不足为奇了!对于其他可能遇到此问题的人,这是我的首选解决方案:

    我发现处理此问题的最佳方法是将物理站点地图加载到 xml 文档中。然后我有一个 NavigationNodeFactory,它验证并从 xml 文档构建我自己的复合 NavigationNode 树。

    我的 NavigationNode 类随心所欲,并解决​​了我在 SiteMap 和 SiteMapProvider 中发现的问题,即实施者的可测试性差。

    【讨论】:

      【解决方案2】:

      我认为问题可能出在您的描述中,您试图首先测试一个已经存在的类 - SiteMapNode。

      您将希望在您的应用程序中测试站点地图节点的使用,因此我建议如果您想对站点地图节点类执行操作,请使用中间 ISiteMapProvider 或类似的方法进行包装您自己制作的摘要,并让您的自定义导航控件与之交互。

      然后,您可以有一个 SiteMapNodeProvider 用于运行时调用 SiteMapNode 进行操作,以及一个 StubbedSiteMapProvider 用于您的单元测试,将您的测试值传递给自定义控件。

      【讨论】:

      • 感谢贾斯汀的回复。这是我最初的路线。不幸的是,由于对象图的复合性质,删除站点地图涉及编写大量非 DRY 代码以供喜欢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多