非常简单,我希望能够测试一个Asp.Net Web窗体服务器控件正在输出正确的Html,因为它将构建动态内容。我刚刚开始创建控件,并希望以TDD风格构建可获取输出的Html。来自HtmlTextWriter的测试输出
我创建了一个单独的类来完成实际的Html构建,以便能够在正常的Asp.Net管道之外进行隔离测试。
在我的单元测试,我可以控制什么是返回HTML,但我在确认HTML包含我期待例如标记问题:
<div id="wrapper">
<div id="fields">
</div>
<div id="main">
</div>
</div>
和我使用NUnit我会希望能够存储从服务器控件的输出,并通过使用Is.StringMatching喜欢测试:
Assert.That(output, Is.StringMatching("<div id=\"main\">.*?</div>"));
这不幸的是不会的,因为额外的\ r \ n \ t说明了HtmlTextwriter
输出工作。
我目前使用它的方式是通过创建一个StringWriter
,然后用它来创建HtmlTextWriter
这样的:
stringWriter = new StringWriter();
htmlTextWriter = new HtmlTextWriter(stringWriter);
,然后我把下面的方法:
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输出的任何人可以提供任何建议的最佳途径?
感谢的是,没想到装成的XmlDocument的,可能工作 – Nathan 2011-03-01 16:06:41
这也将自动执行代码的良好性,尽管这可能在这里没什么重要。 – 2011-03-01 16:14:42
对不起,它花了一段时间很忙,但没有回答你的答案,因为它最适合我目前的情况。干杯 – Nathan 2011-03-21 10:17:38