gpt4 book ai didi

asp.net-mvc - ASP.NET MVC - 单元测试由 TagBuilders 生成的 HTML

转载 作者:行者123 更新时间:2023-12-02 00:30:25 26 4
gpt4 key购买 nike

我有通过 TagBuilders 生成 html 的代码我如何测试是否生成了正确的 HTML?我的 TagBuilder 不仅仅是一个标签那么简单,它还包含其他标签。所以我有一个函数返回带有以下 HTML 的 TagBuilder 对象

<div> 
<input type="checkbox" name=".." /> <label for=".." />
<input type="checkbox" name=".." /> <label for=".." />
<input type="checkbox" name=".." /> <label for=".." />
<div/>

所以,为了测试我们是否有第一个复选框,我们这样做:

Assert.True(MyTag.InnerHtml.Contains("<input type="checkbox" name=".." />");  

这似乎是错误的。还有另一种方法吗?

最佳答案

你可以做的是使用 HtmlAgilityPack生成标签的 HtmlDocument,然后运行查询以获取元素数量等。

HtmlDocument document = new HtmlDocument();
document.LoadHtml(MyTag.ToString());

var checkBoxCount = document.DocumentNode.DescendantNodes()
.Where(item => item.Name == "input" && item.GetAttributeValue("name", string.Empty) == "..")
.Count();

Assert.True(checkBoxCount == 3);

您可以通过一个接受文档和谓词函数并返回项目数的方法来清理调用。

使用这种方法,您必须注意您的方法输出的 Html 是否有效,否则 HtmlAgilityPack 会尝试为您修复它,从而导致奇怪的测试问题。

关于asp.net-mvc - ASP.NET MVC - 单元测试由 TagBuilders 生成的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com