首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自HtmlTextWriter的测试输出

来自HtmlTextWriter的测试输出
EN

Stack Overflow用户
提问于 2011-03-01 23:33:01
回答 3查看 1.8K关注 0票数 4

很简单,我希望能够测试Html窗体服务器控件在构建动态内容时是否输出了正确的Asp.Net。我刚刚开始创建这个控件,我想用TDD风格来构建输出的Html。

我已经创建了一个单独的类来构建实际的超文本标记语言,这样我就能够在正常的Asp.Net管道之外隔离地测试它。

在我的单元测试中,我可以控制返回什么html,但是我在确认html是否包含我期望的标记时遇到了问题,例如:

代码语言:javascript
复制
<div id="wrapper">
    <div id="fields">
    </div>
    <div id="main">       
    </div> 
</div>

当我使用Nunit时,我希望能够存储服务器控件的输出,并使用Is.StringMatching测试它,如下所示:

代码语言:javascript
复制
Assert.That(output, Is.StringMatching("<div id=\"main\">.*?</div>"));

不幸的是,由于HtmlTextwriter输出的额外\r \n \t指令,这将不起作用。

我目前使用它的方式是创建一个StringWriter,然后使用它创建HtmlTextWriter,如下所示:

代码语言:javascript
复制
    stringWriter = new StringWriter();
    htmlTextWriter = new HtmlTextWriter(stringWriter);

然后我调用下面的方法:

代码语言:javascript
复制
public string Build(HtmlTextWriter writer)
{

    writer.AddAttribute(HtmlTextWriterAttribute.Id, "wrapper");
    writer.RenderBeginTag(HtmlTextWriterTag.Div);

    writer.AddAttribute(HtmlTextWriterAttribute.Id, "fields");
    writer.RenderBeginTag(HtmlTextWriterTag.Div);
    writer.RenderEndTag();
    writer.WriteLine();
    writer.AddAttribute(HtmlTextWriterAttribute.Id, "main");
    writer.RenderBeginTag(HtmlTextWriterTag.Div);
    writer.RenderEndTag();
    writer.RenderEndTag();



    return writer.InnerWriter.ToString();
}

随着Html变得越来越复杂,我可以预见到验证输出是否正确的其他问题。

另一个约束是能够通过CI服务器(最有可能是TeamCity)运行测试,因此所有代码或引用的库都需要位于我的解决方案中。

我做了相当多的谷歌搜索,但似乎找不到太多关于如何测试Html输出的信息。有没有人能为最好的前进方式提供任何建议?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-01 23:40:29

您可以确保您的html输出是格式良好的xml。然后,在您的测试代码中,将输出加载到XmlDocument中,这样就没有了所有的空格问题。然后,您可以检查所有标记是否真的在那里,以及它们在XmlDocument中应该在的位置。

票数 2
EN

Stack Overflow用户

发布于 2011-03-01 23:53:27

我会将其加载到HtmlAgilityPack中,然后使用XPath或使用fizzler项目执行一些QuerySelectorAll() jQuery样式的查询。

票数 0
EN

Stack Overflow用户

发布于 2011-03-02 19:32:15

内置的测试XML和HTML的能力可能会对您有所帮助。

  • XML Assertions in MbUnit v3
  • MbUnit 3.2 makes it easier to work with Xml
  • MbUnit wiki reference
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5156591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档